如何通过knpuniversity / oauth2-client-bundle获取Google刷新令牌?

问题描述 投票:0回答:1

我使用knpuniversity/oauth2-client-bundleleague/oauth2-google通过“使用Google登录”功能连接我的Symfony 4 Web应用程序中的用户。我遵循了this tuto。我在Google上注册了我的应用。

我在access_type: offline配置中设置了knpu.oauth2.client.googleconfig/packages/knpu_oauth2_client.yaml文件)

我尝试通过GoogleAuthenticator::getUser(League\OAuth2\Client\Token\AccessToken $credentials)方法(扩展了KnpU\OAuth2ClientBundle\Security\Authenticator\SocialAuthenticator)获取用户刷新令牌。

[不幸的是,$credentials->getRefreshToken()总是返回null

为什么我没有获得用户刷新令牌?

symfony oauth-2.0 google-oauth2 refresh-token
1个回答
0
投票

根据documentation,“刷新令牌仅提供给请求脱机访问的应用程序”。因此,在实例化提供程序时,您需要设置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 configuration中,您可以执行:

google:
    type: google
    client_id: '%env(OAUTH_GOOGLE_CLIENT_ID)%'
    client_secret: '%env(OAUTH_GOOGLE_CLIENT_SECRET)%'
    redirect_params: {}
    access_type: offline
© www.soinside.com 2019 - 2024. All rights reserved.