Google+ Sign-In button与Facebook Login API具有惊人的相似性,我喜欢它。
Facebook JS SDK有一个signed_request parameter,它在客户端提供,但可以传递给我的服务器,验证客户端身份验证是否已经发生。它由Facebook加密签名,这允许我验证客户端是否登录而无需与服务器端的Facebook通信。
有没有办法用G + JS API做类似的事情?具体来说,我想进行客户端身份验证,然后将一些数据发送到我的服务器并验证客户端是否真的已登录到Google,没有向Google发起服务器端请求。
(我想要这个,因为我只想使用登录按钮作为注册机制;我不想发布到Google Plus或获取用户的朋友列表或类似的东西,这通常需要一个完整的访问令牌。)
答案 0 :(得分:4)
Google +不会代表用户代表用户向您的应用程序发出请求,而是在作为vanilla OAuth 2.0流程的一部分设置的回调网址之外。
收到新令牌或授权码时,您应该在服务器端进行tokeninfo请求,以验证您收到的令牌是否合法,以及是否为目标用户。
我不确定您的服务器使用的是哪个平台,因此我无法粘贴相关代码,但请参阅here for a code sample。
答案 1 :(得分:3)
因此,实际上该参数非常匹配,id_token与access_token一起返回。它是一个签名的json Web令牌,包含用户ID,客户端ID等。听起来这会解决你的用例!看一下Tim Bray撰写的这篇博文的http://android-developers.blogspot.nl/2013/01/verifying-back-end-calls-from-android.html - 它专注于Android,但同样的逻辑几乎适用于任何客户。
一旦你得到这个,你知道它在交付时有效,只是喜欢signed_request。当然,在任何一种情况下,如果用户注销或撤销对您的应用的访问权限,则访问令牌可能不再适用于拨打电话。