我建立了一个带有vuejs前端和laravel后端的网站。
登录的唯一方法是使用社交网站登录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上生成的令牌匹配侧。
非常感谢!!
答案 0 :(得分:7)
在做了一些阅读之后,我觉得这个流程可能有效。你的想法好吗?
1用户通过Facebook在Android / Ios应用程序上进行身份验证
2检索facebook访问令牌
3在Web服务器上执行api调用公共端点并传递FB访问令牌和FB ID
4a网络服务器使Facebook Graph Api呼叫具有访问令牌并验证令牌有效,通过Facebook App进行身份验证,并匹配Facebook ID
4b如果用户在网络上不存在,请先创建用户
5如果符合以上条件,则Web服务器会从用户模型生成JWT令牌并将JWT令牌返回给应用
6 App现在使用JWT令牌进行未来的API调用