Oauth 在Google API中检测应用程序被吊销的权限

Oauth 在Google API中检测应用程序被吊销的权限,oauth,oauth-2.0,google-api,google-oauth,google-api-client,Oauth,Oauth 2.0,Google Api,Google Oauth,Google Api Client,我正在使用PHP谷歌客户端库。我成功地从user/google获得了一个令牌并刷新令牌,以便与API一起使用。 一旦用户在谷歌页面上的谷歌设置中撤销对我的网站的权限,我就会收到以下错误: Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (401) Invalid Credentials 这是用户吊销我的权限后的预期行为。 但是,如何检测到用户撤销了该访问 目前,我执行以下操作以查看是

我正在使用PHP谷歌客户端库。我成功地从user/google获得了一个令牌并刷新令牌,以便与API一起使用。 一旦用户在谷歌页面上的谷歌设置中撤销对我的网站的权限,我就会收到以下错误:

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

很遗憾,这段代码没有检测到被撤销的权限。我该如何处理呢?

谷歌API应该只在没有授权的情况下返回401。因为您以前有过授权,所以收到401是用户已撤销访问权限的可靠指示


您是否正在寻找一种在进行API调用之前通知您此类更改的检测机制?今天,谷歌还没有一个推送通知机制可以通知你的应用程序这些事件。当然,基于拉的机制是没有用的——您可以简单地进行API调用并更有效地处理401。

一旦检测到用户已撤销权限,您可以要求用户再次授予权限

要检测授权是否已被撤销:如果您以前有过授权,

  • 使用已撤销的
    access\u令牌进行API调用将导致状态代码为401的响应。像这样

    {
    “错误”:{
    “错误”:[
    {
    “域”:“全局”,
    “原因”:“authError”,
    “消息”:“无效凭据”,
    “位置类型”:“标题”,
    “位置”:“授权”
    }
    ],
    “代码”:401,
    “消息”:“无效凭据”
    }
    }
    
  • 在撤销后尝试刷新令牌将导致一个带有400状态代码和
    invalid\u grant
    消息的响应。正如合同中规定的那样

    提供的授权授权无效(例如授权 代码、资源所有者凭据)或刷新令牌无效 无效、过期、吊销,与重定向不匹配 在授权请求中使用的URI,或已颁发给 另一个客户

    以下是此类响应的一个示例:

    {
    “错误”:“无效的授权”
    }
    

撤销权限后,下次尝试获取访问令牌时,您将收到一个无效的授予异常。这不是答案,而是注释:/1要调用任何特定的api以获得第一个响应吗?php sdk?