【问题标题】:Oauth 2.0 issues with refresh token PHP刷新令牌 PHP 的 Oauth 2.0 问题
【发布时间】:2015-02-09 21:07:52
【问题描述】:

当我调用访问令牌时,我似乎没有获得刷新令牌?这是代码:

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');
$redirect = filter_var(URL,
FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);
$client->setApprovalPrompt("force"); 
$client->setState('offline');

var_dump($client->getAccessToken());

这就是我从中得到的:

string(163) "{"access_token":"","token_type":"Bearer","expires_in":3599,"created":1111111111}"

为什么我没有得到刷新令牌?

【问题讨论】:

  • 真的是空白吗? access_token 为空?
  • 不,不是,我只是删除了它。
  • 你得到一个仍然有效的令牌,这应该是最重要的。 (AFAIK OAuth 规范不要求您每次请求时都获得一个不同的令牌。)
  • 我解决了这个问题。错误是: $client->setState('offline');它应该是:$client->setAccessType('offline');

标签: php oauth token


【解决方案1】:

您应该注意的一件事:返回刷新令牌(在 除了访问令牌)仅在用户同意时 明确地用于请求的范围。基本上,当审批页面 显示。所有后续流程都只会返回一个访问令牌。

你不见了

$client->setApprovalPrompt("force"); 

How to get offline token and refresh token and auto-refresh access to Google API

【讨论】:

  • 感谢您的帮助。但是,这并不能解决问题。我仍然只得到访问令牌: string(163) " {"access_token":"ya29.FgFml_QHQMORS0GqtL7kCZ3PO-gqm4fJOCj1hC5IYdJGptbGKtIBwrdnsWNauqFPIsXOgj1iuy3CQw","token_type":"Bearer","expires_in":3600,"created}"":14203 >
  • 部分原因是这个错误。非常感谢您的帮助 =)
猜你喜欢
  • 2014-09-22
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2013-11-23
  • 2015-11-04
  • 2015-05-17
  • 2013-02-23
  • 2020-04-24
相关资源
最近更新 更多