League \ OAuth2 \ Client \ Provider \ GenericProvider Ошибка SSL - PullRequest
1 голос
/ 20 июня 2019

Я использовал библиотеку «league / oauth2-client» и пытался получить токен доступа у провайдера.Мой первый шаг - получение кода авторизации.Когда я запрашиваю токен доступа у провайдера, я получаю исключение типа «ошибка cURL 51: SSL: альтернативное имя субъекта сертификата не соответствует имени целевого хоста« XXX.XXX.com »».

Я использовал Postman для получения доступатокен вручную с заданными правильными параметрами.Он работал нормально, и провайдер вернул маркер доступа почтальону.

https://github.com/thephpleague/oauth2-client

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    'clientId' => 'XXX',
    'clientSecret' => 'YYY',
    'redirectUri' => 'https://exampleclient.com/oauth',
    'urlAuthorize' => 'https://example.com/OAuth2AuthorizationServer/AuthorizationController',
    'urlAccessToken' => 'https://example.com/oauth/AccessTokenController',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/ResourceController',
    'scopes' => array('BLABLA'),
    'verify' => false,
]);

try {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    echo 'Access Token: ' . $accessToken->getToken() . "<br>";
    echo 'Refresh Token: ' . $accessToken->getRefreshToken() . "<br>";
    echo 'Expired in: ' . $accessToken->getExpires() . "<br>";
    echo 'Already expired? ' . ($accessToken->hasExpired() ? 'expired' : 'not expired') . "<br>";

    $resourceOwner = $provider->getResourceOwner($accessToken);
    var_export($resourceOwner->toArray());
    die;

    } catch (Exception $e) {

        // Failed to get the access token or user details.
        exit($e->getMessage());
    }

1 Ответ

0 голосов
/ 27 июня 2019

лига / oauth2-клиент библиотека использует GuzzleHttp \ Client , поэтому нам нужно установить

GuzzleHttp\RequestOptions::VERIFY => false

Самый простой способ сделать это - создать новый GuzzleHttp \ Client и установить для параметра VERIFY значение false.

$guzzyClient = new GuzzleHttp\Client([
    'defaults' => [
        \GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5,
        \GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => true],
     \GuzzleHttp\RequestOptions::VERIFY => false,
]);

$provider->setHttpClient($guzzyClient);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...