symfony - 如何使用 knpuniversity/oauth2-client-bundle 获取 Google 刷新令牌?
问题描述
我在我的 Symfony 4 Web 应用程序中使用并使用“使用 Google 登录”功能连接用户knpuniversity/oauth2-client-bundle
。league/oauth2-google
我跟着这个教程。我在 Google 中注册了我的应用程序。
我access_type: offline
在knpu.oauth2.client.google
配置中设置(config/packages/knpu_oauth2_client.yaml
文件)
我尝试在我的GoogleAuthenticator::getUser(League\OAuth2\Client\Token\AccessToken $credentials)
方法(扩展KnpU\OAuth2ClientBundle\Security\Authenticator\SocialAuthenticator
)中获取用户刷新令牌。
不幸的是,$credentials->getRefreshToken()
总是返回null
。
为什么我没有得到用户刷新令牌?
解决方案
根据文档,“刷新令牌仅提供给请求离线访问的应用程序”。因此,在实例化提供程序时,您需要设置 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
推荐阅读
- apache - Apache2 + Symfony4 + 子文件夹 = 问题
- python - 没有使用 python 3.6 和 apache2 的名为 celery 的模块
- python - 将 Numpy 导入 Sublime Text 3
- ruby-on-rails - Rails 聊天应用程序的 FAYE_URL 值应该是多少?
- javascript - google-maps-react 中未显示标记
- python - 调用进程的getter返回无
- image - 如何在“cameraCalibrator”应用程序中使用命令行导入图像?
- matlab - 使用一个命令从矩阵中获取特定点
- android - 房间数据库无此类表异常
- python-3.x - ImportError:/home/kei/darkflow/darkflow/cython_utils/cy_yolo_findboxes.so:未定义符号:_Py_ZeroStruct