为了账号安全,请及时绑定邮箱和手机立即绑定

如何允许移动应用程序通过 Facebook 和 Google

如何允许移动应用程序通过 Facebook 和 Google

Go
青春有我 2021-11-01 16:45:18
这与我关于需要创建 Facebook 应用程序的另一个问题有关。我已经阅读了很多关于如何为访问我在 Google App Engine 上运行的 Web 服务的移动应用程序用户(iOS 和 Android)最好的登录方法。我仍然不清楚如何最好地做到这一点,因为我想同时提供 Google 和 Facebook 登录。该应用程序和网络服务对 Facebook 或 Google 没有任何作用,只是我想搭载他们的登录信息。只需使用 Google 登录 GAE 就非常容易,使用 OpenIDConnect 也是如此。不幸的是,Facebook 不支持这一点。在 SO上阅读一个旧问题,其中有人想做与我相同的事情,看起来该应用程序应该登录 Facebook,然后获取一个令牌,该令牌将传递给我的后端,该令牌需要通过联系 Facebook 进行验证。这是今天的做法吗?我还找到了 Google Identity Toolkit,这似乎正是我所需要的。但是,我没有网站或只有应用程序。我需要让应用程序进行 Facebook 登录,并以某种方式为我的网络服务提供一些东西,以便它可以验证登录信息。稍后,应用程序用户应该能够使用随机 Facebook、Google 和我的自定义用户名/密码登录。应用程序和 Web 服务应该知道用户已登录并授权其访问 REST API。我该如何实现?顺便说一句,我在 GAE 上使用 Go。如果有人可以解释是否有多种选择来执行此操作,利弊,并提供最佳方法和需要做什么的概述,我将非常感激。非常感谢您对此的任何帮助!更新好的,非常感谢大家的帮助和指点。我已经成功地为我的 GAE 后端运行了适用于 iOS的快速入门示例应用程序。基本上,在 GAE 上的 Web 服务上创建了一个 Facebook 应用程序和权限凭据,以便示例 iOS 应用程序可以登录。在我在数据存储中拥有经过身份验证的用户并可以授权连续的 API 调用之前,还有一点差距。此时的主要开放问题:成功登录Facebook或Google后如何在iOS应用程序中获取gtoken?我应该在我的 Web 服务上显式调用 API 以传递 gtoken 还是在启用 Gitkit API 的情况下以某种方式自动执行?谢谢你的帮助!更新要自己回答 #1 和 #2,可以在应用程序引擎配置中提供一个“成功登录 url”,以便应用程序知道使用 gtoken 调用的位置。然后之后就像在答案中解释的那样。
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

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

当用户使用身份工具包成功登录到您的应用程序时,您的服务器应该会收到一个 gtoken。您在这里有两个选择:

  1. 将 gtoken 传递给您的应用程序并将其保存在那里。当您的应用程序向后端发出 API 调用时,您的应用程序应将 gtoken 附加到每个请求。您的后端应验证每个需要授权的 API的 gtoken( https://developers.google.com/identity/toolkit/web/required-endpoints )。

  2. 验证 gtoken,生成一个您的后端可以识别/识别用户的令牌。然后将令牌传递给您的应用程序,其他一切都与选项 1 相同。

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

无论您的决定是什么,使用您的 API 的应用程序都应该向您传递一些您的后端可以识别/授权用户的信息。


查看完整回答
反对 回复 2021-11-01
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

答案是关于使用 Google Identity Toolkit (GIT)。GIT 本身是一个身份提供者,它将与您的应用程序后端集成。流程沿着以下路线工作:

  • 您的应用程序通过其 GIT API 请求登录

  • GIT 将执行与 Facebook 或其他 3rd 方提供商的联合登录(对您的应用程序透明)并向应用程序返回GIT令牌(从您的端到端系统角度代表唯一用户,即应用程序加后端)

  • 应用程序向后端发出请求,并在其中传递 GIT 令牌

  • 后端验证 GIT 令牌的有效性(例如,使用这个 go GIT 客户端 API)并从中提取用户的身份,从而验证请求

您可以在后端端点 doc 中找到有关后端令牌验证的更多详细信息,特别是查找以下部分:

  • 了解 Identity Toolkit cookie/token

  • 为用户获取信息

现在后端的实际令牌验证可能需要几秒钟,因此对来自应用程序的每个 REST 请求进行验证可能不切实际。如果是这样,您需要以某种方式:

  • 保存该特定应用程序实例的用户在您的应用程序和后端之间管理的“会话”之类的信息中进行身份验证的信息

  • 将后端收到的特定 REST 请求映射到特定的此类经过身份验证的“会话”

但是我不确定在应用程序+后端上下文中这个“会话”功能究竟是如何完成的,我还没有编写任何应用程序。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信