1

我正在开发一个使用 OAuth2 使用他们的 Google 帐户登录用户的网络应用程序。我也在访问一些谷歌数据 API,所以我也要求刷新令牌和离线访问(以防它有所作为)。

我的问题如下:在应用程序的用户第一次登录后,OAuth 和我将令牌/用户 ID 保存在数据库中,我需要有一个在后续访问中识别用户的系统。

为此,我将 Google 用户 ID(通过调用“userinfo”端点获得)保存在 Session 变量中。这工作正常,直到用户退出他们的 Google 帐户并可能使用另一个帐户(到 Google,而不是我的应用程序)登录。此时,我的应用程序不再具有正确的登录用户,并且可以显示不属于正确用户的数据。

有谁知道我如何有效地识别登录的 Google 帐户用户?

我想我总是可以调用 userinfo 端点,但是在我的应用程序的每个页面上执行此操作对我来说似乎有点过分,并且想要一种更有效的方法。

我正在使用 PHP 编程并使用“google-api-php-client”库进行开发。

预先感谢您的帮助。

4

1 回答 1

2

你是对的。目前最有效的方法是查询 userinfo 端点。

但是,根据您的 UI 外观,我们发现提供更改身份的选项是一个很好的折衷方案。一个小链接,比如“不是你?” 在登录按钮上是一个选项。有一个非常新的 api 没有完全记录,它可以让您强制用户选择另一个帐户。看到这个答案:强制谷歌帐户选择器

我们希望让网站更加无缝和高效,但目前没有什么要宣布的。

于 2013-02-01T22:16:34.533 回答