我是YouTube API的首次使用者并且一直在关注文档。然而,在非基本功能方面,文档非常不清楚,并且似乎没有其他文档供我检查以回答我自己的查询。
让我解释一下:
我已经实现了https://developers.google.com/youtube/reporting/guides/authorization/server-side-web-apps#example提供的基本身份验证/令牌示例,但效果很好。
现在,假设访问令牌存储在数据库而不是会话中(以后用于"离线"数据检索)......我的问题是:
如何检查用户是否已撤销对我的应用程序的访问权限,可能是通过他/她的帐户设置?如果以这种方式撤销并且我尝试离线使用(现在无效)访问令牌会发生什么?
更新
不幸的是,它似乎没有回归An error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. }
返回的原始错误是
Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "domain": "global", "reason": "unauthorized" } ], "status": "UNAUTHENTICATED" } }
哪个可以被抓住,但非常奇怪。我没有错误的凭证,因为错误显示...我没有授权!
文档严重缺乏。
答案 0 :(得分:1)
如果用户撤消对您的应用的权限,然后尝试使用(现在无效的)访问令牌,则会返回消息An error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. }
。
正确的继续方法是检查是否返回了该错误,如果是,则重定向用户再次进行身份验证,以便生成新的访问令牌,并正确授予访问权限。以下面的逻辑为例:
try {
//request the service
} catch (Exception $e) {
if($e->getMessage() == "Token has been expired or revoked"){
//redirect user to authenticate again
}
}