在 Google API 中检测应用程序的撤销权限

Mer*_*ion 5 oauth google-api oauth-2.0 google-api-client google-oauth

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

Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (401) Invalid Credentials
Run Code Online (Sandbox Code Playgroud)

这是预期的行为,因为用户撤销了我的许可。但是,如何检测用户撤销了该访问权限?

目前我执行以下操作来查看我是否有权访问:

//$token json fetched from database
$gclient->setAccessToken($token);
if ($gclient->getAccessToken())
    //i should have access
Run Code Online (Sandbox Code Playgroud)

不幸的是,这段代码没有检测到撤销的权限。我该如何处理?

bre*_*eno 1

Google API 应该仅因缺乏授权而返回 401。由于您之前已获得授权,因此收到 401 是用户已撤销访问权限的可靠指示。

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