/** * Fetch access token using code, used in the second step of OAuth flow. * * @param $accessCode * @return \League\OAuth2\Client\Token\AccessToken */ public function fetchAccessToken($accessCode) { $provider = new Instagram(['clientId' => $this->ClientID, 'clientSecret' => $this->ClientSecret, 'redirectUri' => $this->getRedirectUri() . '?provider_id=' . $this->ID]); //TODO: handle token expiry (as of 2016-08-03, Instagram access tokens don't expire.) //TODO: save returned user data? return $token = $provider->getAccessToken('authorization_code', ['code' => $accessCode]); }
function it_should_return_access_token(OAuthProvider $provider, StubSession $session, AccessToken $accessToken) { $authorizationCode = 'foobar-authorization-code'; $provider->getAccessToken('authorization_code', ['code' => $authorizationCode])->shouldBeCalled()->willReturn($accessToken); $accessToken->getToken()->shouldBeCalled()->willReturn($token = 'foo-token'); $session->put('instamob.oauth_access_token', $token)->shouldBeCalled(); $this->authorize($authorizationCode); $session->get('instamob.oauth_access_token')->shouldBeCalled()->willReturn('foo-token'); $this->accessToken()->shouldBeEqualTo('foo-token'); }
/** * Retrieve OAuth2 access token for authenticated user * * @param srting $authorizationCode * * @return \Instamob\Contracts\AuthInterface */ public function authorize($authorizationCode) { $this->accessToken = $this->provider->getAccessToken('authorization_code', ['code' => $authorizationCode]); $this->session->put('instamob.oauth_access_token', $this->accessToken->getToken()); return $this; }