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

     2023-03-10     210

关键词:

【中文标题】带有 Laravel 后端和 React Native 应用程序的 Facebook 和 JWT Auth【英文标题】:Facebook and JWT Auth w/ Laravel back-end and React Native app 【发布时间】: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,并在您的数据库中找到相应的帐户并加载该用户。 【参考方案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

基于 Laravel API 后端和 Vuejs 前端构建

】基于LaravelAPI后端和Vuejs前端构建【英文标题】:BuildingonLaravelAPIbackendandVuejsfrontend【发布时间】:2018-03-1918:21:21【问题描述】:如果这个方法行得通,我需要一点帮助。首先,我有一个使用Laravel和LaravelPassport创建的后端API服务... 查看详情

带有 JavaScript 后端和前端的多人游戏。最佳实践是啥?

】带有JavaScript后端和前端的多人游戏。最佳实践是啥?【英文标题】:MultiplayergamewithJavaScriptbackendandfrontend.Whatarethebestpractices?带有JavaScript后端和前端的多人游戏。最佳实践是什么?【发布时间】:2011-03-0619:32:37【问题描述】:... 查看详情

两个独立的 Heroku(Node 后端和 React 前端)之间的通信?

】两个独立的Heroku(Node后端和React前端)之间的通信?【英文标题】:CommunicationbetweentwoseparateHeroku(Nodebackend&Reactfrontend)?【发布时间】:2020-01-0602:42:41【问题描述】:我正在创建的应用程序使用MERN堆栈(MySql、Express、React、Nod... 查看详情

如何使用分离的后端和前端(Passport / Express / React)进行社交身份验证

】如何使用分离的后端和前端(Passport/Express/React)进行社交身份验证【英文标题】:Howtodosocialauthwithadecoupledbackendandfrontend(Passport/Express/React)【发布时间】:2018-10-1506:37:43【问题描述】:我正在尝试使用passportJS/Express后端和reactJS... 查看详情

带有 PHP 后端和速率限制的 Spotify 自动播放列表管理

】带有PHP后端和速率限制的Spotify自动播放列表管理【英文标题】:SpotifyautomatedplaylistmanagementwithPHPback-endandratelimits【发布时间】:2014-11-0112:57:54【问题描述】:两个问题:问题1。我们需要从我们的后端(PHP)管理Spotify用户的4个播... 查看详情

使用 ASP.NET Core 后端和 React 前端的 Web 应用程序中的授权和身份验证?

】使用ASP.NETCore后端和React前端的Web应用程序中的授权和身份验证?【英文标题】:AuthorizationandauthenticationinwebapplicationwithASP.NETCorebackendandReactfrontend?【发布时间】:2022-01-1306:34:38【问题描述】:我有一个Web应用程序,其中前端使... 查看详情

如何将 Laravel 项目转换为 laravel api?

】如何将Laravel项目转换为laravelapi?【英文标题】:HowtoconvertaLaravelproject,toalaravelapi?【发布时间】:2019-05-2905:46:33【问题描述】:我有一个完全完成的项目,使用Laravel后端和React前端。react应用程序包含在Laravel代码中,只有在登... 查看详情

post 方法在 laravel 8 中无法使用 react native for android

】post方法在laravel8中无法使用reactnativeforandroid【英文标题】:postmethodisnotworkinginlaravel8withreactnativeforandroid【发布时间】:2022-01-1916:58:47【问题描述】:我是laravel的新手,我正在使用laravel后端和reactnativeforandroid,并尝试使用post方... 查看详情

使用 React Native 和 Laravel 后端对 Pusher 进行身份验证

】使用ReactNative和Laravel后端对Pusher进行身份验证【英文标题】:AuthenticatingPusherusingReactNativeandaLaravelBackend【发布时间】:2018-08-0922:48:34【问题描述】:我正在尝试使用以下ReactNative脚本对私人广播进行身份验证。importReactfrom\'react... 查看详情

如何*同时*将 ngrok 用于后端和前端?

】如何*同时*将ngrok用于后端和前端?【英文标题】:HowcanIusengrokforbackendandfrontend*atthesametime*?【发布时间】:2020-03-0502:26:55【问题描述】:我有一个想要在移动设备中测试的react应用,但是Chrome或Firefox中的移动开发工具还不够。... 查看详情

重复位置“/”Nginx错误后端和前端

】重复位置“/”Nginx错误后端和前端【英文标题】:DuplicateLocation"/"NginxErrorBackendAndFrontend【发布时间】:2021-02-0321:31:11【问题描述】:我在5000端口上运行Express服务器,在8080上运行React应用程序。我的想法是仅根据位置(ur... 查看详情

带有 laravel 后端数据的 Vue v-if

】带有laravel后端数据的Vuev-if【英文标题】:Vuev-ifwithlaravelbackenddata【发布时间】:2019-10-0723:16:02【问题描述】:我有一个应用程序,它使用laravel作为后端/api和vue组件在前端的视图中,这是一个很好的组合imo。这就是我现在所做... 查看详情

如何将带有 django 的 react.js webpack 部署到 heroku?

】如何将带有django的react.jswebpack部署到heroku?【英文标题】:Howtodeployreact.jswebpackwithdjangotoheroku?【发布时间】:2017-01-3121:14:38【问题描述】:我有一个django后端和react.js前端以及webpack。我已经根据此页面在本地设置了所有内容:... 查看详情

为某些路由禁用 vue-router?或者如何运行 SPA 后端和非 SPA 前端?

...nd?【发布时间】:2017-05-2402:06:02【问题描述】:所以我在Laravel5.3和Vue2中开发网站/webapp。SEO很重要,所以我想在Laravel+Blade中保留网站的前端/可抓取 查看详情

带有 React 前端的 Django 后端

】带有React前端的Django后端【英文标题】:DjangobackendwithaReactfrontend【发布时间】:2017-03-0420:22:49【问题描述】:想法我已经开始构建这种社交媒体类型的网站,其中包括基本的社交媒体页面,例如个人资料、状态提要、搜索、事... 查看详情

如何将 Docusign 的电子签名 API 与 .NET 后端和 Angular + Devextreme 前端集成?

...【问题描述】:在这一点上完全迷失了。我们的后端使用带有.NET的c#,我们的前端使用带有DevExt 查看详情

Laravel 和 Flutter 通知系统

】Laravel和Flutter通知系统【英文标题】:LaravelandFlutterNotificationsSystem【发布时间】:2020-09-1923:24:15【问题描述】:我想在一个平台上构建一个带有移动应用程序的Web应用程序。因此,他们都将使用相同的数据库,即MySQL。我想使... 查看详情

使用纯 erlang OTP 代替带有 React.js 和 phoenix 框架的 elixir 后端

】使用纯erlangOTP代替带有React.js和phoenix框架的elixir后端【英文标题】:UsingpureerlangOTPinsteadofelixirback-endwithReact.jsandphoenixframework【发布时间】:2020-06-1308:35:31【问题描述】:我目前正在设计一个Web应用程序,并计划使用React.js前端... 查看详情