4

Google+ 登录按钮与Facebook 登录API有着惊人的相似之处,我喜欢这样。

Facebook JS SDK 有一个在客户端提供的signed_request 参数,但可以将其传递给我的服务器,以验证客户端身份验证是否已发生。它由 Facebook 加密签名,这使我可以验证客户端是否已登录,而无需与服务器端的 Facebook 交谈。

有没有办法用 G+ JS API 做类似的事情?具体来说,我想进行客户端身份验证,然后将一些数据发布到我的服务器并验证客户端确实登录到 Google,而不向 Google发起服务器端请求。

(我想要这个,因为我只想使用登录按钮作为注册机制;我不想发布到 Google Plus 或获取用户的朋友列表或类似的东西,这通常需要完整的访问令牌。 )

4

2 回答 2

4

Google+ 目前不会代表用户向您的应用程序发出请求,在作为普通 OAuth 2.0 流程的一部分设置的回调 URL 之外。

当收到一个新的令牌或授权码时,你应该在服务器端发出 tokeninfo 请求,以验证你收到的令牌是合法的,并且是针对目标用户的。

我不确定您的服务器使用的是哪个平台,因此无法粘贴相关代码,但请参阅此处获取代码示例

于 2013-03-14T17:46:39.090 回答
3

因此,实际上该参数与 access_token 一起返回的 id_token 非常匹配。它是一个签名的 json Web 令牌,包括用户 ID、客户端 ID 等。听起来这将解决您的用例!看看http://android-developers.blogspot.nl/2013/01/verifying-back-end-calls-from-android.html Tim Bray 的这篇博文 - 它以 Android 为重点,但逻辑几乎相同适用于任何客户。

一旦你得到这个,你就知道它在交付时是有效的,就像一个签名请求一样。当然,在任何一种情况下,如果用户退出或撤销对您的应用程序的访问权限,访问令牌可能不再对拨打电话有效。

于 2013-03-15T08:36:01.133 回答