我正在使用PHP Google客户端库。我成功地从user/google获取令牌并刷新令牌以与API一起使用。一旦用户在Google页面上的Google设置中撤销我网站的权限,我就会收到以下错误:
Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (401) Invalid Credentials
这是预期的行为,因为用户撤销了我的权限。但是,我如何检测到用户撤销了该访问权限?
现在我做以下操作来查看我是否有访问权限:
//$token json fetched from database
$gclient->setAccessToken($token);
if ($gclient->getAccessToken())
//i should have access
不幸的是,这段代码没有检测到被撤销的权限。我该如何处理呢?
2条答案
按热度按时间o4hqfura1#
检测到用户已撤销权限后,您可以要求用户再次授予权限。
要检测授权已被吊销,请执行以下操作:如果你之前有授权的话,
access_token
进行API调用将导致状态码为401的响应。invalid_grant
消息的响应。invalid_grant所提供的授权授权(例如,授权代码、资源所有者凭证)或刷新令牌无效、过期、被撤销、与授权请求中使用的重定向URI不匹配,或已被颁发给另一个客户端。
以下是此类响应的示例:
ngynwnxp2#
Google API应该只在没有授权的情况下返回401。由于您之前有授权,因此收到401是用户已撤销访问权限的可靠指示。
您是否正在寻找一种检测机制,在您进行API调用之前通知您此类更改?目前,Google没有一种推式通知机制可以通知您的应用程序此类事件。当然,基于拉式的机制没有什么用处--您可以简单地进行API调用并更有效地处理401。