我正在开发一个 flutter 应用程序,我想实现社交登录(Google 和 Facebook)。
\n我的 API 是用 Laravel 实现的,并使用 Laravel-socialite 来验证用户身份,有后端、Web 前端(使用 VueJs),现在我正在使用 flutter 开发移动应用程序。
\nWeb 应用程序运行良好(使用vue-social-auth包)。
\n到目前为止我所做的:
\n我面临的问题:
\n我似乎没有开始工作是将刚刚登录的用户发送到后端,以提供应用程序内的用户体验。
\n这是vue-social-auth包提供的内容以及我发送到后端的内容,该后端工作正常:
\n{code: "4/0AY0e-g442SMxdtLb_MVdQ63u1ydp48bbCRQco5Azoyf3y1rvYybDabyZGOvwAs7ZFJDQHA", scope: "email+profile+openid+https://www.googleapis.com/au\xe2\x80\xa6le+https://www.googleapis.com/auth/userinfo.email", authuser: "0", prompt: "consent"}\nRun Code Online (Sandbox Code Playgroud)\n这就是flutter_google_sign_in给出的(除了用户个人资料数据之外):
idToken: "",\naccessToken: "",\nserverAuthCode: "", \nRun Code Online (Sandbox Code Playgroud)\nserverAuthCode 始终为null。
我怎样才能使用相同的API逻辑,通过社交帐户登录flutter上的用户?
\n谢谢。
\n我使用 Passport 将用户登录到 Laravel API 端点,用户使用 laravel-socialite 包使用其社交帐户(google、facebook)进行身份验证。
用户登录和注销的工作流程完美运行(生成令牌......等等)。问题是我有一个控制器,它应该根据是否有用户登录返回数据。
我确实从 HTTP 请求中拦截了 Bearer 令牌,但我无法让用户使用该令牌(我会使用数据库外观来根据令牌选择用户,但我实际上正在寻找是否已经实现了更干净的方法护照)
我也不想使用 auth:api 中间件,因为即使没有用户登录,控制器也应该工作并返回数据。
这是api路由:
Route::get("/articles/{tag?}", "ArticleController@get_tagged");
Run Code Online (Sandbox Code Playgroud)
这是我希望控制器具有的逻辑
public function get_tagged($tag = "", Request $request)
{
if ($request->header("Authorization"))
// return data related to the user
else
// return general data
}
Run Code Online (Sandbox Code Playgroud)