问题描述
我正在使用OAuth2 Server PHP处理来自Amazon Alexa的令牌授权,这是我的技能。
我注意到Alexa经常要求用户停用和响应该技能。
发生了什么事
- Alexa将POST发送到我的Token.PHP页面
{"grant_type":"refresh_token","refresh_token":"3673c55124f61d8fxyz37a315bb0296de","client_id":"alexa"}
和“授权”标头,其中包含client_id
和client_secret
- 我的服务器将返回错误400,其中包含
{"error":"invalid_grant","error_description":"Refresh token has expired"}
- 用户收到来自Alexa的错误消息,要求重新激活该技能…
我希望Alexa向服务器发送新请求以获取新令牌,但这没有发生。
我想念什么?
谢谢
解决方法
我在三个不同的地方(这里是oauth2-server-php Github和Amazon Alexa论坛)发布了这个问题,但没有答案……
作为“解决方案”,我在server.php
中做了以下操作:
$server->addGrantType(new OAuth2\GrantType\RefreshToken($storage,[
'always_issue_new_refresh_token' => false,'unset_refresh_token_after_use' => false
]));
然后我通过删除代码的这一部分来更改RefreshToken.php
:
if ($refreshToken['expires'] > 0 && $refreshToken["expires"] < time()) {
$response->setError(400,'invalid_grant','Refresh token has expired');
return null;
}
直到我得到更好的答案/解释:-)