【问题标题】:Does Google+ JavaScript API have an equivalent to Facebook's signed_request?Google+ JavaScript API 是否具有与 Facebook 的 signed_request 等效的功能?
【发布时间】:2013-03-13 19:53:00
【问题描述】:

Google+ Sign-In buttonFacebook Login API 有着惊人的相似之处,我喜欢这样。

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

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

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

【问题讨论】:

    标签: google-plus


    【解决方案1】:

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

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

    我不确定你的服务器使用的是哪个平台,所以我无法粘贴相关代码,但请参阅here for a code sample

    【讨论】:

    • (我在使用 Java。)当您说“总是”时,您的意思是“在每个请求中,验证会话”吗? Facebook 的 signed_request 功能的目的是在服务器端不联系 Facebook 的情况下验证会话。这是一个例子。 developers.facebook.com/blog/post/534
    • 不,不是在每个请求上,只是在发布新令牌时。然后,您将存储令牌,否则使用更原生的会话来维护用户的存在。
    • 编辑我的答案更清楚,感谢您的反馈:)
    • 好的,我想你已经回答了我的问题。 (“否!:-)”)但这又引发了我单独发布的另一个问题:如果不是在每个请求中,我应该如何验证令牌仍然有效? stackoverflow.com/questions/15415442/…
    • 感谢您将接受更改为伊恩的答案,他是正确的。
    【解决方案2】:

    所以,实际上该参数有一个很好的匹配,即与 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 为重点,但同样的逻辑几乎适用于任何客户端。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      相关资源
      最近更新 更多