【发布时间】:2015-12-01 17:56:06
【问题描述】:
最近我正在研究 laravel 5.1 框架,并试图通过社交身份验证让用户登录,如 facebook 登录 .. 我从 youtube Laravel 5.1 Socialite Authentication 学习了本教程@
但是得到这个异常
InvalidStateException in AbstractProvider.php line 191:
in AbstractProvider.php line 191
在 SocialAuthController.php 第 61 行中的 AbstractProvider->user() 在 SocialAuthController->github_Callback() 在 Controller.php 第 256 行中的 call_user_func_array(array(object(SocialAuthController), 'github_Callback'), array()) 在 ControllerDispatcher.php 第 164 行中的 Controller->callAction('github_Callback', array())
这是我的代码
// facebook Sociolite for routing
Route::get('/auth/facebook', 'Auth\SocialAuthController@redirectToProvider');
Route::get('callback_facebook', 'Auth\SocialAuthController@handleProviderCallback');
// AuthController
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Socialite;
use Auth;
use redirect;
class AuthController extends Controller
{
class SocialAuthController extends Controller{
// For Facebook
public function redirectToProvider(){
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback(){
$curl = curl_init();
curl_setopt($curl , CURLOPT_SSL_VERIFYPEER, false);
$user = Socialite::driver('facebook')->user();
$data = ['name'=>$user->name, 'email'=>$user->email, 'password'=>$user->token];
$userDB = User::where('email',$user->email)->first();
if (!is_null($userDB)){
Auth::login($userDB);
}
else{
Auth::login($this->create($data));
}
return redirect('/pages/profile');
}
}
}
config\service.php
'facebook' => [
'client_id' => '513845902100524',
'client_secret' => '135699237e16cd3a50d2cbfec3a5e58c',
'redirect' => 'http://localhost:8000/callback_facebook',
],
【问题讨论】:
-
我这边有一个 cookie 问题。我用这个答案解决了它stackoverflow.com/a/31738836/1090395
标签: laravel laravel-5 laravel-socialite