Example #1
0
 public function testFactory()
 {
     $token = AccessToken::factory(new Response(200, [], Stream::factory('{"access_token":"test_token_value","expires_in":3600,"refresh_token":"test_refresh_token"}')), new Douban());
     $this->assertEquals(AccessTokenInterface::VERSION_OAUTH2, $token->getTokenVersion());
     $this->assertEquals('test_token_value', $token->getTokenValue());
     $this->assertEquals('test_refresh_token', $token->getRefreshToken());
     $this->assertTrue(is_numeric($token->getExpireTimestamp()));
     $this->assertInstanceOf('GuzzleHttp\\Message\\Response', $token->getResponse());
 }
Example #2
0
 /**
  * @param ResourceServerInterface $resourceServer
  * @param array $urlQuery
  * @return \Eva\EvaOAuth\OAuth2\Token\AccessTokenInterface
  */
 public function getAccessToken(ResourceServerInterface $resourceServer, array $urlQuery = [])
 {
     $urlQuery = $urlQuery ?: $_GET;
     $code = empty($urlQuery['code']) ? '' : $urlQuery['code'];
     $state = empty($urlQuery['state']) ? '' : $urlQuery['state'];
     $options = $this->options;
     if (!$code) {
         throw new InvalidArgumentException("No authorization code found");
     }
     //TODO: Valid state to void attach
     $parameters = ['grant_type' => 'authorization_code', 'code' => $code, 'client_id' => $options['client_id'], 'client_secret' => $options['client_secret'], 'redirect_uri' => $options['redirect_uri']];
     if ($state) {
         $parameters['state'] = $state;
     }
     $httpClient = $this->httpClient;
     $method = $resourceServer->getAccessTokenMethod();
     $httpClientOptions = $method == ResourceServerInterface::METHOD_GET ? ['query' => $parameters] : ['body' => $parameters];
     $request = $httpClient->createRequest($method, $resourceServer->getAccessTokenUrl(), $httpClientOptions);
     try {
         $this->getEmitter()->emit('beforeGetAccessToken', new BeforeGetAccessToken($request, $resourceServer));
         /** @var Response $response */
         $response = $httpClient->send($request);
         return AccessToken::factory($response, $resourceServer);
     } catch (RequestException $e) {
         throw new \Eva\EvaOAuth\Exception\RequestException('Get access token failed', $e->getRequest(), $e->getResponse());
     }
 }