oauth2-server-php没有返回刷新令牌

时间:2017-04-01 18:31:18

标签: php oauth oauth-2.0

使用this oauth2 library for PHP,我通过client_credentials验证用户,如下所示:

server.php

ExifInterface exif = new ExifInterface(getContentResolver().openInputStream(selectedImage));

然后在我的端点(token.php)中:

$server = new OAuth2\Server($storage, [
'access_lifetime' => 3600, // 1 hour
'refresh_token_lifetime' => 50400, // 14 days
]);

$server->addGrantType(new OAuth2\GrantType\ClientCredentials($server->getStorage('client_credentials'), ['always_issue_new_refresh_token' => true])));

虽然返回了新的access_token,但不会返回refresh_token:

require_once __DIR__.'/server.php';    
$request = OAuth2\Request::createFromGlobals();
$server->handleTokenRequest($request)->send(); //returns the token object

你如何获得refresh_token?

2 个答案:

答案 0 :(得分:0)

您必须在OAuth2选项中指定accessType: 'offline'才能接收刷新令牌。如果前者不起作用,请尝试access_type: 'offline'

答案 1 :(得分:0)

这是正常行为。 使用客户端凭据授予类型,刷新令牌是无用的,因为客户端可以通过在需要时询问新的访问令牌来获取新的访问令牌。

此外,我发现a closed issue您使用的库的作者清楚地解释了此处没有错误。

如本回答所述,您会在RFC6749 section 4.4.3中找到{{1}}。

您还可以阅读this question and the accepted answer