2017-03-18 78 views
0

所以,我已经得到了从谷歌认证后这种反应:我应该如何处理google oauth响应?

{ 
    "user": { 
    "id": "116807551237969746774", 
    "email": "[email protected]", 
    "verified_email": true, 
    "name": "John Doe", 
    "given_name": "John", 
    "family_name": "Doe", 
    "picture": "https:\/\/lh3.googleusercontent.com\/-XdUIqdMkCWA\/AAAAAAAAAAI\/AAAAAAAAAAA\/4252ldubv5M\/photo.jpg", 
    "locale": "en" 
    }, 
    "credentials": { 
    "access_token": "ya29.GlsSBIA_hMKZIDE_wqJAJS0vrHD_Wd2HfwRTTvLISv0i1uFICCqz4JdEZcL09mFFlGdt71D9pW80SLShHgyeSOZgnWcL5piL5m0jYo1TMU6o0fDLnqGAWm6BY-Wl", 
    "token_type": "Bearer", 
    "expires_in": 3600, 
    "refresh_token": "1\/az_TmhPRaYG5NDH6L9gBeNo6STOD9EbTt1VkkBmp3IQ", 
    "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjBlNmExN2I2YjU4MGIzNTFmMGQ5YmEzMzY2YTU0Y2U1NmViOWIxN2UifQ.eyJhenAiOiIxMDAzMjk3NzQ4MDc1LWsxdml0OGMxMHJ1ZnM4cjZpYmZyYmxlZmJhamFoZmllLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiMTAwMzI5Nzc0ODA3NS1rMXZpdDhjMTBydWZzOHI2aWJmcmJsZWZiYWphaGZpZS5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNjgwNzU1MTIzNzk2OTc0Njc3NCIsImVtYWlsIjoiNzA0MzA2N0BnbWFpbC5jb20iLCJlbWFpbF84PIXpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6IkdrOHFjMTdCcEVGVGZmWkpKbkh6NGciLCJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJpYXQiOjE0ODk4MTIxMzksImV4cCI6MTQ4OTgxNTczOSwibmFtZSI6IkFudG9uIEFsZWtzYW5kcm92IiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tTEJuMTlWX1NEN3cvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvQUFvbXZWMTRMVFIycUgtOXJ5S2dScjIxd3A1Z1FZRGNmUS9zOTYtYy9waG90by5qcGciLCJnaXZlbl9uYW1lIjoiQW50b24iLCJmYW1pbHlfbmFtZSI6IkFsZWtzYW5kcm92IiwibG9jYWxlIjoiZW4ifQ.BHv5BP3ZsagvunfMzGLwmxkBdtoRocPa_PXdq2lrd4D9BoFGkK06eJVbNNbcPOFdAMba3V5lIIG_L499gIy3TTz_PIHBPi6DMSp6uyfkCwf2n-PspZtTbTRlUm5ZvRdAyPEEyLLkWllKkMsRk-Nwp3vhyOLnExzH7SXiEefU4kaXXCpjsHV3GvZ-yhrmNlicEY3TPLwI-tl_lydXTBXRRiPZBGWjHK75hqvQzUktC2Flimd7JnCLhF0FOS3yFKc5D11WPKMOO4YkIQDbBrKY64vyxQAd-Zb2KfvXZi6Dorq7IJF6sK2GAfI3edSaoMZBMa0-x2V7FuFIBLtTgGRnsw" 
    } 
} 

我还没有发现什么,我应该用这种反应的credentials一部分做文档?我应该使用什么来识别用户身份?什么应该保存为客户端(ios/android应用程序)令牌以恢复会话? expires_in: 3600是什么意思,我该怎么办? token_type: Bearer是什么意思,为什么我需要它?等等


谢谢@pioyyid澄清! 我一直在寻找的主要事情是这样的:

在服务器端从credentials得到access_token财产和验证,使用该网址

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={your access_token} 

做任何你想要与所提供的数据的其余部分。

就个人而言,我更喜欢生成自己的令牌,将其保存在客户端并使用它来恢复用户会话(以验证其身份)。一旦令牌因任何原因丢失,用户只需再次完成整个过程。

回答

0

我应该如何处理这个响应的凭证部分?

高兴,因为你做了很难的部分。

我应该如何使用用户识别?

任何你喜欢的,或根本没有。这取决于你的应用的用例。

什么应该保存为客户端(ios/android应用程序)令牌以恢复会话?

刷新令牌。请注意,“恢复会话”是错误的术语。在OAuth/REST中,没有会话。

expires_in:3600是什么意思,我该怎么办?

这就是说,访问令牌将在1小时(3600秒)内过期。你应该做的是使用刷新令牌来获取一个新的访问令牌,通过在发布后描述https://developers.google.com/identity/protocols/OAuth2WebServer#offline

什么是token_type:承载是指?

这意味着只要您尝试访问Google API,就应将访问令牌放置在HTTP授权标头中。例如Authorization: "Bearer aaaaaaa"其中aaaaaa是访问令牌。

为什么我需要它?

向Google证明您的应用已被该资源的所有者授予访问Google资源(例如,Drive中的文件)的权限。