Facebookのログインが、Laravel 5.2のSocialiteパッケージを使用して突然停止しました。私はそれを数日の間完全に機能させました。そして、それはちょうど落ちたようです。私はかなり新しいLaravelですので、何か簡単なものであれば、ある程度の恵みをお持ちください。Laravel 5.2 Socialite Facebook APIのログインリダイレクトエラー
私はこのエラーを取得する:
"www.facebook.comページが機能していないwww.facebook.comはあなたにあまりにも多くの時間をリダイレクト。"
php artisan config:clear
のようなコマンドを実行してローカルサーバーを再起動しようとしました。また、バージョン"laravel/socialite": "^2.0"
を実行しているコンポーザでインストールを試みました。私は助けることができないが、実際にはFacebook Developer Apps APIの設定で何かだと思うが、すべてが大丈夫だ!
私は、時間をかけてバグを発見できる人のために私のコードを提供します。私は
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\SocialAccountService;
use Socialite;
class FacebookController extends Controller
{
public function redirectToProvider()
{
//send off a request and to FB and get a token
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback(SocialAccountService $service)
{
$user = $service->createOrGetUser(Socialite::driver('facebook')->user());
auth()->login($user);
return redirect()->to('account/{id}/myaccount');
}
}
FacebookController.php
Route::get('auth/facebook', 'Auth\[email protected]');
Route::get('auth/facebook/callback', 'Auth\[email protected]');
routes.phpのhttps://blog.damirmiladinov.com/laravel/laravel-5.2-socialite-facebook-login.html#.WK8bGBKLRBw
.env
FACEBOOK_CLIENT_ID=xxxxxxxxx
FACEBOOK_CLIENT_SECRET=xxxxxxxx
FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook/
をオフに行くためのガイドとして、このリンクを使用しました
SocialAccountService.php
namespace App;
use Laravel\Socialite\Contracts\User as ProviderUser;
class SocialAccountService
{
public function createOrGetUser(ProviderUser $providerUser)
{
$account = SocialAccount::whereProvider('facebook')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$user = User::whereEmail($providerUser->getEmail())->first();
if (!$user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
}