我已经 Build 了一个带有vuejs前端和laravel后端的网站 .
登录的唯一方法是使用Socialite通过Facebook登录
一切正常 .
现在我正在构建一些React Native应用程序(Ios / Android),它们也使用Facebook登录但需要与同一个web api进行交互 .
我想使用JWT来保护React Native的API - > Laravel API
我在Laravel端设置了JWT w / Dingo,我可以使用JWTAuth :: fromUser()生成令牌 . 我已经 Build 了一些使用令牌进行身份验证的API endpoints ..到目前为止一切都很好 .
现在这里变成了粘性的部分 . 据我所知,在Laravel方面,您可以为任何用户创建JWT令牌 . 现在JWT "identifier"只是"id" ..而且's my understanding that the token I generate from JWTAuth::fromUser() simply has no idea or care that this user doesn' t具有传统凭据,而是使用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端生成的令牌匹配 .
非常感谢!!
1 回答
在做了一些阅读之后我觉得这个流程可能有效 . 请问你的想法?
1用户通过Facebook在Android / Ios应用程序上进行身份验证
2检索facebook访问令牌
3在Web服务器上执行api调用公共 endpoints 并传递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调用