2017-02-23 18 views
2

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; 

     } 

    } 
} 

答えて

2

右みんな、誰もがこのような問題に直面している場合、私はあなたのdevelopers.facebook.comアカウント内またはあなたの.envファイルの設定のいずれか、あなたのルートや、コールバックURLが少し間違っていることをかなり確信することができます。私の場合、私の.envに私のコールバックがあったのですが、それにはさらに'/'という末尾が付きました。

リダイレクト問題の原因:

FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook/

は、リダイレクトの問題が修正されました:

FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook 

のFacebookからのコールバックは、それが混乱しているように見えたその余分'/'とそう'/callback?code=xxxxYOUR-TOKENxxxxxx'

を追加コールバックはリダイレクトループを引き起こします。

関連する問題