【发布时间】:2019-07-17 03:21:45
【问题描述】:
我有一个基于 Angular 6 的前端 SPA 和一个基于 Laravel 5.6 的后端。我正在尝试在前端使用 ngx-social-login 并在后端使用 Socialite 进行 facebook 身份验证。
这是我组件中的代码
signInWithFacebook(): void {
this.sas.signIn(FacebookLoginProvider.PROVIDER_ID).then(
userData => this.as.fb(userData.authToken).subscribe(x => {
console.log(x);
})
);
}
这是一项服务
fb(data): Observable<any> {
return this.http.get(this.API_URL, data);
}
这是我的 Laravel 路线
$api->version('v1', function ($api) {
$api->get('auth/facebook', 'SocialAuthFacebookController@redirectToProvider');
$api->get('auth/facebook/callback', 'SocialAuthFacebookController@callback');
});
那是一个控制器
public function redirectToProvider()
{
return Socialite::driver('facebook')->stateless()->redirect();
}
public function callback()
{
$user = Socialite::driver('facebook')->stateless()->user();
$authUser = $this->findOrCreateUser($user, 'facebook');
$token = JWTAuth::fromUser($authUser);
return Response::json(compact('token'));
}
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}
由于我仅将 Laravel 用作 API,因此我想我无法访问 redirectToProvider,因此我尝试调用 auth/facebook/callback 并将其传递给我在 SPA 上登录后获得的 authToken。但是,它似乎不起作用。
感谢 Facebook,信息如此之多,以至于我不知道出了什么问题以及如何处理。
【问题讨论】:
标签: php angular laravel facebook-authentication laravel-socialite