Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2社交名媛Facebook API登录重定向错误_Php_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel 5.2社交名媛Facebook API登录重定向错误

Php Laravel 5.2社交名媛Facebook API登录重定向错误,php,laravel,laravel-5,Php,Laravel,Laravel 5,我的Facebook登录突然停止使用Laravel 5.2的社交名媛软件包。我已经让它完全发挥功能好几天了,现在它似乎已经停止了。我对拉雷维尔是个新手,所以如果这是件容易的事,请给我一些恩典 我得到这个错误: “www.facebook.com页面不工作。www.facebook.com重定向您的次数太多了。” 我已经尝试重新启动本地服务器,运行类似于php-artisan-config:clear的命令。还尝试使用运行版本为“^2.0”“laravel/socialite”的composer进

我的Facebook登录突然停止使用Laravel 5.2的社交名媛软件包。我已经让它完全发挥功能好几天了,现在它似乎已经停止了。我对拉雷维尔是个新手,所以如果这是件容易的事,请给我一些恩典

我得到这个错误:

“www.facebook.com页面不工作。www.facebook.com重定向您的次数太多了。”

我已经尝试重新启动本地服务器,运行类似于
php-artisan-config:clear
的命令。还尝试使用运行版本为“^2.0”“laravel/socialite”的composer进行安装。我忍不住认为这是Facebook开发者应用程序API配置中的一些东西,但一切看起来都很好

我将提供我的代码,以防任何人有时间来帮助,可以发现任何错误。我用这个链接作为出发的指南

.env

FACEBOOK_CLIENT_ID=xxxxxxxxx
FACEBOOK_CLIENT_SECRET=xxxxxxxx
FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook/
routes.php

Route::get('auth/facebook',  'Auth\FacebookController@redirectToProvider');
Route::get('auth/facebook/callback',  'Auth\FacebookController@handleProviderCallback');
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');
    }
}
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;

        }

    }
}
FacebookController.php

Route::get('auth/facebook',  'Auth\FacebookController@redirectToProvider');
Route::get('auth/facebook/callback',  'Auth\FacebookController@handleProviderCallback');
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');
    }
}
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;

        }

    }
}
SocialAccountService.php

Route::get('auth/facebook',  'Auth\FacebookController@redirectToProvider');
Route::get('auth/facebook/callback',  'Auth\FacebookController@handleProviderCallback');
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');
    }
}
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;

        }

    }
}

对了,如果有人面临这样的问题,我可以相当肯定你的路由或回调URL有点不正确,无论是在你的
developers.facebook.com
帐户还是你的
.env
文件配置中。在我的
.env
中,我的回调带有附加的
'/'

导致重定向问题的原因:

FACEBOOK\u回调\u URL=http://localhost:8000/auth/facebook/

修复了重定向问题:

FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook
来自Facebook的回调追加了
'/callback?code=xxxxx您的令牌xxxxxx'

因此,对于额外的
“/”
,它似乎混淆了导致重定向循环的回调