Google在Android应用中登录以使用Cloud Endpoints后端

时间:2017-03-18 23:11:39

标签: android oauth google-cloud-endpoints google-signin

我正在编写一个带有Google Cloud Endpoints后端的Android应用,我希望通过Google登录来限制我的后端。

我已经关注了Android instructions,并且已成功登录。换句话说,我收到了一个令牌,然后我可以将其传递给服务器并验证它代表的用户。大。

然而,我在这里错过了更大的图景。问题:

  1. 我是否应该将此令牌与每个请求一起发送回服务器,并重复在每个请求中验证它的过程?
  2. 如果是,则令牌将在某个时刻到期(我相信1小时)。我想用户不必再次登录,应该离开以避免这种情况,对吗?
  3. 是一种刷新令牌的方式(我认为Google Signin是OAuth2)?
  4. 最重要的是,这是所有人使用Google登录来保护其后端的标准方式吗?我期待这是一个非常简单的过程,因为我只使用谷歌产品。但是,我发现自己在Android和Cloud Enpoints的文档页面和页面中丢失了许多拼图。
  5. 感谢任何帮助或见解。

3 个答案:

答案 0 :(得分:1)

我没有使用Android身份验证,但谷歌使用outh2进行所有身份验证。 Google SDK可以帮助您减轻使用oauth2带来的一些痛苦。回答你的问题

  1. 是 - 您处于基于令牌的身份验证的世界中,并且您确实会在每次请求时发送令牌。
  2. 是。令牌将在一小时后过期。要在第一次执行oauth2身份验证时解决此问题,您还会获得刷新令牌。当用户的令牌过期时,您使用刷新令牌来获取新令牌。该刷新令牌可以存储在客户端。客户端会在其中一个请求中发现该现有令牌已过期,并将使用刷新令牌
  3. 请求新令牌
  4. 是的,您使用Google刷新令牌网址来使用刷新令牌并获取新令牌。我已经给出了谷歌下面重要的oauth网址。
  5. 这确实是oauth2处理我的朋友。
  6. 因为您正在使用云端点,所以我相信您将使用身份验证端点。

    使用服务提供商(google,facebook,github等)进行oauth2身份验证时,通常会生成以下端点:

    https://webiste.com/auth/signin/{provider}
    https://webiste.com/auth/callback/{provider}
    https://webiste.com/auth/refresh/{provider}
    

    以下是您将使用的oauth2的Google网址:

    oauth_url: 'https://accounts.google.com/o/oauth2/v2/auth',  //start auth
    token_url: 'https://accounts.google.com/o/oauth2/token',   //get id_token, access_token, refresh_token token
    refresh_token_url : 'https://www.googleapis.com/oauth2/v4/token',
    token_info_url: 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=',  //validate token
    

    您还希望在https://developers.google.com/identity/protocols/OAuth2浏览Google的oauth2文档。

答案 1 :(得分:0)

我认为您应该使用Firebase UI Android库进行身份验证。它为您提供Google,Facebook,电子邮件,Twitter和Github登录选项,其中很大一部分就是只需编写几行代码即可完成。 有关详情,请点击here

答案 2 :(得分:0)

使用3ed party代码执行此操作的最佳做​​法。它将花费更少的时间,将有更少的错误,并将很容易扩展到其他方法以后。 我建议Firebase,因为它非常简单,免费,效果很好并且归谷歌所有。