src/Yandex/OAuth/OAuthClient.php
public function requestAccessToken($code)
    {
        $client = $this->getClient();

        try {
            $response = $client->request(
                'POST',
                '/token',
                [
                    'auth' => [
                        $this->clientId,
                        $this->clientSecret
                    ],
                    'form_params' => [
                        'grant_type'    => 'authorization_code',
                        'code'          => $code,
                        'client_id'     => $this->clientId,
                        'client_secret' => $this->clientSecret
                    ]
                ]
            );
        } catch (ClientException $ex) {
            $result = $this->getDecodedBody($ex->getResponse()->getBody());

            if (is_array($result) && isset($result['error'])) {
                // handle a service error message
                $message = 'Service responsed with error code "' . $result['error'] . '".';

                if (isset($result['error_description']) && $result['error_description']) {
                    $message .= ' Description "' . $result['error_description'] . '".';
                }
                throw new AuthRequestException($message, 0, $ex);
            }

            // unknown error. not parsed error
            throw $ex;
        }

        try {
            $result = $this->getDecodedBody($response->getBody());
        } catch (\RuntimeException $ex) {
            throw new AuthResponseException('Server response can\'t be parsed', 0, $ex);
        }

        if (!is_array($result)) {
            throw new AuthResponseException('Server response has unknown format');
        }

        if (!isset($result['access_token'])) {
            throw new AuthResponseException('Server response doesn\'t contain access token');
        }

        $this->setAccessToken($result['access_token']);

        $lifetimeInSeconds = $result['expires_in'];

        $expireDateTime = new \DateTime();
        $expireDateTime->add(new \DateInterval('PT'.$lifetimeInSeconds.'S'));

        $this->setExpiresIn($expireDateTime);

        return $this;
    }
public function requestAccessToken($code)
    {
        $client = $this->getClient();

        try {
            $response = $client->request(
                'POST',
                '/token',
                [
                    'auth' => [
                        $this->clientId,
                        $this->clientSecret
                    ],
                    'form_params' => [
                        'grant_type'    => 'authorization_code',
                        'code'          => $code,
                        'client_id'     => $this->clientId,
                        'client_secret' => $this->clientSecret
                    ]
                ]
            );
        } catch (ClientException $ex) {
            $result = $this->getDecodedBody($ex->getResponse()->getBody());

            if (is_array($result) && isset($result['error'])) {
                // handle a service error message
                $message = 'Service responsed with error code "' . $result['error'] . '".';

                if (isset($result['error_description']) && $result['error_description']) {
                    $message .= ' Description "' . $result['error_description'] . '".';
                }
                throw new AuthRequestException($message, 0, $ex);
            }

            // unknown error. not parsed error
            throw $ex;
        }

        try {
            $result = $this->getDecodedBody($response->getBody());
        } catch (\RuntimeException $ex) {
            throw new AuthResponseException('Server response can\'t be parsed', 0, $ex);
        }

        if (!is_array($result)) {
            throw new AuthResponseException('Server response has unknown format');
        }

        if (!isset($result['access_token'])) {
            throw new AuthResponseException('Server response doesn\'t contain access token');
        }

        $this->setAccessToken($result['access_token']);

        $lifetimeInSeconds = $result['expires_in'];

        $expireDateTime = new \DateTime();
        $expireDateTime->add(new \DateInterval('PT'.$lifetimeInSeconds.'S'));

        $this->setExpiresIn($expireDateTime);

        return $this;
    }
public function requestAccessToken ( $ code ) { $ client = $ this -> getClient ( ) ; try { $ response = $ client -> request ( 'POST' , '/token' , [ 'auth' => [ $ this -> clientId , $ this -> clientSecret ] , 'form_params' => [ 'grant_type' => 'authorization_code' , 'code' => $ code , 'client_id' => $ this -> clientId , 'client_secret' => $ this -> clientSecret ] ] ) ; } catch ( ClientException $ ex ) { $ result = $ this -> getDecodedBody ( $ ex -> getResponse ( ) -> getBody ( ) ) ; if ( is_array ( $ result ) && isset ( $ result [ 'error' ] ) ) { // handle a service error message $ message = 'Service responsed with error code "' . $ result [ 'error' ] . '".' ; if ( isset ( $ result [ 'error_description' ] ) && $ result [ 'error_description' ] ) { $ message .= ' Description "' . $ result [ 'error_description' ] . '".' ; } throw new AuthRequestException ( $ message , 0 , $ ex ) ; } // unknown error. not parsed error throw $ ex ; } try { $ result = $ this -> getDecodedBody ( $ response -> getBody ( ) ) ; } catch ( \ RuntimeException $ ex ) { throw new AuthResponseException ( 'Server response can\'t be parsed' , 0 , $ ex ) ; } if ( ! is_array ( $ result ) ) { throw new AuthResponseException ( 'Server response has unknown format' ) ; } if ( ! isset ( $ result [ 'access_token' ] ) ) { throw new AuthResponseException ( 'Server response doesn\'t contain access token' ) ; } $ this -> setAccessToken ( $ result [ 'access_token' ] ) ; $ lifetimeInSeconds = $ result [ 'expires_in' ] ; $ expireDateTime = new \ DateTime ( ) ; $ expireDateTime -> add ( new \ DateInterval ( 'PT' . $ lifetimeInSeconds . 'S' ) ) ; $ this -> setExpiresIn ( $ expireDateTime ) ; return $ this ; }
Exchanges a temporary code for an access token.

@param $code

@throws AuthRequestException on a known request error
@throws AuthResponseException on a response format error
@throws RequestException on an unknown request error

@return self
Exchanges a temporary code for an access token .