如何允许移动应用程序使用Facebook和Google登录以访问GAE上的Web服务?

mur*_*att 3 google-app-engine go google-login facebook-login google-identity-toolkit

这与我关于创建Facebook应用程序的其他问题有关.

我一直在阅读很多关于如何最好地登录访问我在Google App Engine上运行的网络服务的移动应用程序用户(iOS和Android)登录的内容.我还不清楚如何做到最好,因为我想提供Google和Facebook登录.应用程序和网络服务对Facebook或Google没有任何作用,除了我想搭载他们的登录信息.

只使用Google for GAE登录非常简单,使用OpenIDConnect也是如此.不幸的是,Facebook不支持这一点.

在这里阅读一个旧问题,其中某人想要做同样的事情,看起来应用程序应该进行Facebook登录,然后获得一个令牌传递到我的后端,需要通过联系Facebook进行验证.这是今天怎么做的?

我还找到了Google Identity Toolkit,这似乎是我需要的.但是,我没有网站或只有应用程序.我需要让应用程序进行Facebook登录,并以某种方式为我的Web服务提供一些东西,以便它可以验证登录信息.

稍后,应用程序用户应该可以使用随机的Facebook,Google和我的自定义用户名/密码登录.应用程序和Web服务应该知道用户已登录并授权它访问REST API.

我该如何做到这一点?顺便说一句,我正在使用Go on GAE.

我真的很感激,如果有人能够解释是否有多种选择如何做到这一点,优点和缺点,并提供最佳方法的概述和需要做的事情.

非常感谢您的帮助!

UPDATE

好的,非常感谢大家的帮助和指点.我已成功为我的GAE后端运行iOS快速入门示例应用程序.基本上,在GAE上的我的Web服务上创建了Facebook应用程序和权限凭据,以便示例iOS应用程序可以登录.

在我在数据存储区中拥有经过身份验证的用户之前,还有一点差距,并且可以授权连续的API调用.

此时的主要开放性问题:

  1. 如何在Facebook或Google登录成功后获得iOS应用中的gtoken?
  2. 我应该在我的Web服务上显式调用API来传递gtoken,还是在启用Gitkit API的情况下以某种方式自动调用?

谢谢你的帮助!

UPDATE

要自己回答#1和#2,可以在应用引擎配置中找到"成功登录网址",以便应用知道使用gtoken调用的位置.之后就像在答案中解释的那样.

小智 6

看起来你在GAE上有一个应用程序和一个后端.如果您使用的是谷歌身份工具包,它将允许您使用Facebook,Google和电子邮件/密码登录.

当用户使用身份工具包成功登录您的应用时,您的服务器应该收到一个gtoken.你有两个选择:

  1. 将gtoken传递给您的应用并将其保存在那里.当您的应用向您的后端发出API调用时,您应用应将gtoken附加到每个请求.您的后端应为每个需要授权的API 验证gtoken(https://developers.google.com/identity/toolkit/web/required-endpoints).
  2. 验证gtoken,生成后端可以识别/识别用户的令牌.然后将令牌传递给您的应用程序,其他所有内容都与选项1相同.

如果您不想使用身份工具包,可以在您的app/backend上实现facebook登录,并使用facebook令牌在您的应用和后端之间进行通信.

无论您的决定是什么,使用您的API的应用都应该通过您后端可以识别/授权用户的内容.