oauth-2.0 - Alexa oauth refresh_token 和 invalid_grant 响应
问题描述
我正在使用OAuth2 Server PHP来处理来自 Amazon Alexa 的令牌授权以实现我的技能。
我注意到 Alexa 会定期要求用户停用和响应该技能。
怎么了:
- Alexa 向我的 Token.php 页面发送一个 POST,
{"grant_type":"refresh_token","refresh_token":"3673c55124f61d8fxyz37a315bb0296de","client_id":"alexa"}
其中包含一个“Authorization”标头,其中包含client_id
和client_secret
- 我的服务器将返回错误 400
{"error":"invalid_grant","error_description":"Refresh token has expired"}
- 用户收到来自 Alexa 的错误消息,要求重新激活技能……</li>
我希望 Alexa 向服务器发送新请求以获取新令牌,但这并没有发生。
我错过了什么?
谢谢
解决方案
我在三个不同的地方(这里,oauth2-server-php Github 和 Amazon Alexa 论坛)发布了这个问题,但没有答案……</p>
作为“修复”,我在我的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;
}
直到我得到更好的答案/解释:-)
推荐阅读
- xamarin - 应用程序认证失败:此应用程序类型不支持 ws2_32.dll 中的 API FreeAddrInfoEx
- angular - 角 | 更简单的跨组件通信方式?
- python - 无法使用 SQLAlchemy 获得多对多关系以正常工作
- atom-editor - 在 WSL 中将 Atom 的 Hydrogen 包与 Conda 环境一起使用
- mongodb - Mongo 警告:尝试的日志行 (36kB) 超过最大大小 (10kB)
- oracle - ORA-01950: 即使表移动到不同的表空间,也没有对表空间 'USERS' 的特权
- sql - 使用 SQL Server 中的存储过程为 ASP.NET 获取数据:来自另一个表的位置
- ios - ios - 在领域迁移中创建关系
- regex - 在 Perl 中使用 Regexp 提取两个字符串之间的字符串
- vba - 如何将数据发送到第二个屏幕?