【问题标题】:What should i do with google oauth response?我应该如何处理 google oauth 响应?
【发布时间】:2017-08-09 18:49:45
【问题描述】:

所以,我在身份验证后收到了谷歌的回复:

{
  "user": {
    "id": "116807551237969746774",
    "email": "123456@gmail.com",
    "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 是什么意思,我为什么需要它?等等


感谢@pinoyyid 的澄清! 我一直在寻找的主要内容是:

在服务器端从credentials 获取access_token 属性并使用此url 验证它

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

对提供的其余数据做任何你想做的事情。

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

【问题讨论】:

    标签: oauth google-oauth google-authentication


    【解决方案1】:

    我应该如何处理此响应中的凭据部分?

    很高兴,因为你已经完成了艰难的部分。

    我应该使用什么来识别用户?

    任何你喜欢的,或者什么都没有。这取决于您应用的用例。

    为了恢复会话,应该在客户端(ios/android 应用)保存什么作为令牌?

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

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

    据说访问令牌将在 1 小时(3600 秒)后过期。您应该做的是使用刷新令牌通过发布它来获取新的访问令牌,如https://developers.google.com/identity/protocols/OAuth2WebServer#offline 所述

    token_type: Bearer是什么意思?

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

    我为什么需要它?

    向 Google 证明您的应用已获得该资源所有者授予的访问 Google 资源(例如云端硬盘中的文件)的权限。

    【讨论】:

      猜你喜欢
      • 2015-03-27
      • 2015-11-23
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2021-11-16
      • 2017-08-29
      • 1970-01-01
      相关资源
      最近更新 更多