2017-02-23 56 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配置中的東西,但一切看起來都不錯!

我會提供我的代碼,以防萬一誰有時間幫助並能發現任何錯誤。我用這個鏈接爲指導,走下車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/ 

routes.php文件

Route::get('auth/facebook', 'Auth\[email protected]'); 
Route::get('auth/facebook/callback', 'Auth\[email protected]'); 

FacebookController.php

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'); 
    } 
} 

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

權人,如果有人正面臨着這樣的問題,我可以非常肯定的是,你的路由或回調URL略有不正確,或者在您developers.facebook.com帳戶或.env文件的配置。在我的例子中,在我的.env我有一個額外的尾隨'/'我的回調。

導致重定向問題:

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

固定的重定向問題:

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

從Facebook回調追加'/callback?code=xxxxYOUR-TOKENxxxxxx'

因此,與額外'/'這似乎是混亂導致重定向循環的回調。