在YouTube Oauth中没有刷新令牌



我在本指南之后做服务器端。

我成功完成了OAuth,但是在刷新和访问令牌的步骤交换授权代码中没有获得refresh_token

请求:

POST /o/oauth2/token HTTP/1.1
HOST: accounts.google.com
content-type: application/x-www-form-urlencoded
content-length: 260
code=4/KEOuzih9jwfnHj7Rl1DeqHhcJF0goKPwtwR5IQ09ieg&
client_id=****.apps.googleusercontent.com&
client_secret=****&
redirect_uri=http%3A%2F%2Flocalhost%3A8000%2FsSignIn.html&
grant_type=authorization_code

响应:

{
  "access_token" : "****",
  "expires_in" : 3580,
  "token_type" : "Bearer"
}

我想念什么吗?

需要完成两件事:

  1. 要获取刷新令牌,您必须将access_type=offline作为查询参数传递给OAuth启动请求。这将确保您在第一次进行帐户进行OAuth时获得刷新令牌。
  2. 要一次又一次地进行OAuth以获取刷新令牌,您必须将prompt=consent作为查询参数传递给OAuth Start启动请求。

参考:https://developers.google.com/Indentity/protocols/oauth2weberver#offline

上面的支持文档真的很糟糕且不完整。

这是PHP代码。但是这些设置会产生刷新令牌。

$client->setIncludeGrantedScopes(true);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');

相关内容

  • 没有找到相关文章

最新更新