【发布时间】: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