Как получить Google refre sh токен с помощью knpuniversity / oauth2-client-bundle? - PullRequest
0 голосов
/ 12 февраля 2020

Я использую knpuniversity/oauth2-client-bundle и league/oauth2-google для подключения пользователей в моем веб-приложении Symfony 4 с помощью функции «Войти в Google». Я следовал за этим Туто. Я зарегистрировал свое приложение в Google.

Я установил access_type: offline в конфигурации knpu.oauth2.client.google (файл config/packages/knpu_oauth2_client.yaml)

Я пытаюсь получить токен refre sh пользователя в моем GoogleAuthenticator::getUser(League\OAuth2\Client\Token\AccessToken $credentials) метод (который расширяет KnpU\OAuth2ClientBundle\Security\Authenticator\SocialAuthenticator).

К сожалению, $credentials->getRefreshToken() всегда возвращает null.

Почему я не получаю пользователя refre sh token?

1 Ответ

0 голосов
/ 02 мая 2020

Согласно документации , "Refre sh токены предоставляются только приложениям, которые запрашивают автономный доступ". Таким образом, при создании экземпляра провайдера вам нужно установить accessType.

use League\OAuth2\Client\Provider\Google;

$provider = new Google([
    'clientId'     => '{google-client-id}',
    'clientSecret' => '{google-client-secret}',
    'redirectUri'  => 'https://example.com/callback-url',
    'accessType'   => 'offline',
]);

В knpu_oauth2_client конфигурации вы можете сделать:

google:
    type: google
    client_id: '%env(OAUTH_GOOGLE_CLIENT_ID)%'
    client_secret: '%env(OAUTH_GOOGLE_CLIENT_SECRET)%'
    redirect_params: {}
    access_type: offline
...