Facebook和JWT Auth带有Laravel后端和React Native应用程序

ves*_*ght 3 jwt facebook-login laravel dingo-api react-native

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

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

一切正常.

现在我正在构建一些React Native应用程序(Ios/Android),它们也使用Facebook登录但需要与同一个web api进行交互.

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

我在Laravel端设置了JWT w/Dingo,我可以使用JWTAuth :: fromUser()生成令牌.我已经建立了一些使用令牌进行身份验证的API端点..到目前为止一切都很好.

现在这里变成了粘性的部分.据我所知,在Laravel方面你可以为任何用户创建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端生成的令牌匹配.

非常感谢!!

ves*_*ght 9

在做了一些阅读之后我觉得这个流程可能有效.请问你的想法?

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

2检索facebook访问令牌

3在Web服务器上执行api调用公共端点并传递FB访问令牌和FB ID

4a Web服务器使Facebook Graph Api调用w/Access Token并验证令牌是否有效,是否使用Facebook App进行身份验证,并匹配Facebook ID

4b如果用户首先不在Web上,请创建用户

5如果符合上述条件,则Web服务器将从用户模型生成JWT令牌并将JWT令牌返回给app

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