我在本地尝试过,工作正常。当我部署网站并将应用程序在Facebook上供开发人员使用时,它似乎无法正常工作。
所以我添加了实时域和其他内容 所以我有重定向功能:
public function redirect()
{
return Socialite::driver('facebook')->redirect();
}
,而不是service.php:
'facebook' => [
'client_id' => '******',
'client_secret' => '******',
'redirect' => 'https://example.com/callback',
],
然后您将拥有类似于以下内容的回调函数:
public function callback(SocialFacebookAccountService $service)
{
$user = $service->createOrGetUser(Socialite::driver('facebook')->user());
auth()->login($user);
return redirect()->to('/home');
}
最后,我获得了日期并在SocialFacebookAccountService
中注册了使用,它可以在localhost wamp
服务器中正常工作。我认为您不需要它,但是我在这里添加了createOrgetuser
函数代码:
public function createOrGetUser(ProviderUser $providerUser)
{
$account = SocialFacebookAccount::whereProvider('facebook')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialFacebookAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$user = User::whereEmail($providerUser->getEmail())->first();
$lastuser = User::orderBy('id', 'desc')->first();
$token = str_random(40);
$userslug = new Slugify();
$slug = $userslug->slugify($providerUser->getName());
$slugcheck = User::where('slug', $slug)->exists();
if ($slugcheck){
$slug = $slug.$lastuser->id;
}
if (!$user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'username' => $slug.'fbuser',
'password' => str_random(40),
'token' => $token
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
就是这样。 Facebook给出错误:
此重定向失败,因为该应用的“客户端OAuth设置”中未将重定向URI列入白名单。确保已打开“客户端和Web OAuth登录”,然后将所有应用程序域添加为有效OAuth重定向URI。
我认为不应该拥有所有这些“%”符号和内容。我很想得到一些帮助。谢谢