【问题标题】:Facebook and JWT Auth w/ Laravel back-end and React Native app带有 Laravel 后端和 React Native 应用程序的 Facebook 和 JWT Auth
【发布时间】:2017-10-29 07:25:34
【问题描述】:

我已经建立了一个带有 vuejs 前端和 laravel 后端的网站。

登录的唯一方式是通过 Facebook 使用 Socialite 登录

一切正常。

现在我正在构建一些 React Native 应用程序(Ios/Android),它们也使用 Facebook 登录,但需要与相同的 Web api 交互。

我想使用 JWT 来保护 React Native 的 API -> Laravel API

我在 Laravel 端设置了带有 Dingo 的 JWT,并且能够使用 JWTAuth::fromUser() 生成令牌。而且我已经建立了一些使用令牌进行身份验证的 API 端点.. 到目前为止一切顺利。

现在是变粘的部分。我知道在 Laravel 方面,您可以使用 any 用户创建 JWT 令牌。现在 JWT“标识符”只是“id”。我理解我生成的令牌是从JWTAuth::fromUser() 根本不知道也不关心这个用户没有传统的凭据,而是使用了 Facebook 登录。

然而,在 React Native 方面.. 当一个新用户首次通过 Facebook 登录进行身份验证时.. 它不知道 Laravel 应用程序上的“匹配用户”是什么,我所要做的基本上就是唯一的 Facebook提供者 ID。

所以问题如下:

如何仅使用 Facebook Provider Id 和 JWT Secret 在 React Native 端生成 JWT 令牌,更重要的是,如何在 Laravel 端修改我的 JWT 代码,以便它可以理解生成的令牌使用 Facebook 提供商 ID 和 JWT 令牌

换句话说,我认为我的 Laravel JWT 实现需要修改,以便纯粹基于 Facebook Provider Id 创建/解析令牌,否则它将与在 React Native 端生成的令牌不匹配。

非常感谢!!

【问题讨论】:

  • 当我之前实现了 Facebook 登录时,我从 Facebook 请求用户的姓名、电子邮件等,然后在数据库中创建一个用户帐户,其唯一的 Facebook 应用程序 ID 与该帐户相关联。然后在以后重新认证时,再次获取他们的ID,并在您的数据库中找到相应的帐户并加载该用户。

标签: laravel react-native jwt facebook-login dingo-api


【解决方案1】:

好的,在阅读了一些内容之后,我认为这个流程可能会奏效。请问你的想法?

1 用户在 Android/Ios 应用上通过 Facebook 进行身份验证

2 获取 facebook 访问令牌

3 对 web 服务器上的公共端点进行 api 调用并传递 FB Access Token 和 FB ID

4a Web 服务器使用 Access Token 调用 Facebook Graph Api 并验证令牌是否有效,通过 Facebook 应用程序进行身份验证,并匹配 Facebook ID

4b 如果用户首先在网络上不存在.. 创建用户

5 如果以上匹配,则 Web 服务器从用户模型生成 JWT 令牌并将 JWT 令牌返回给应用程序

6 应用现在使用 JWT 令牌进行未来的 API 调用

【讨论】:

  • 感谢分享!
  • 如何从应用中获取令牌?
  • @JustAnotherDeveloper 有一些软件包可以完成这项工作。如果您使用 expo,您可以简单地使用 docs.expo.io/versions/latest/sdk/facebook
猜你喜欢
  • 2020-02-17
  • 2017-12-29
  • 2017-08-16
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2020-01-15
相关资源
最近更新 更多