![](/img/trans.png)
[英]Laravel Socialite : Laravel\Socialite\Two\InvalidStateException
[英]Laravel \ Socialite \ Two \ InvalidStateException No message Error in Facebook Socialite
我使用 facebook 作為我的應用程序的登錄名。 用戶成功登錄后,他們被重定向到我的用戶主頁。 但是當我嘗試在登錄后刷新頁面時會引發錯誤:
Laravel\\Socialite\\Two\\InvalidStateException 無消息
這是顯示的代碼:
public function user()
{
if ($this->hasInvalidState()) {
throw new InvalidStateException; // this line is highlighted
}
$response = $this->getAccessTokenResponse($this->getCode());
$user = $this->mapUserToObject($this->getUserByToken(
$token = Arr::get($response, 'access_token')
));
return $user->setToken($token)
->setRefreshToken(Arr::get($response, 'refresh_token'))
->setExpiresIn(Arr::get($response, 'expires_in'));
}
這是我的控制器代碼:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Socialite;
class SocialAccountController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Redirect the user to the SNS authentication page.
*
* @return Response
*/
public function redirectToProvider($provider)
{
if ($provider !== 'facebook') {
return abort(404);
}
return Socialite::with($provider)->redirect();
}
public function handleProviderCallback(\App\Models\User $accountService, $provider)
{
try {
$user = Socialite::with($provider)->user();
$create['name'] = $user->getName();
$create['email'] = $user->getEmail();
$create['facebook_id'] = $user->getId();
$user = $accountService->addNew($create);
return view ('user.home')->withDetails($user)->withService($provider);
} catch(Exception $e){
return redirect('/login');
}
}
}
我找到了一些答案,但對我來說沒有效果。 我現在堅持了2天。 我該如何解決這個問題?
當您從 OAuth 提供程序(在本例中為 Facebook)收到回調時,將您需要的數據存儲到您的數據庫中,然后將用戶重定向到帳戶頁面或確認鏈接成功的其他頁面。
該回調 URL 專門用於 OAuth 提供程序提供的憑據。 在第一次命中這些憑據后,刷新頁面會導致錯誤。 通過強制將用戶重定向到另一個頁面,他們將無法刷新並導致相同的問題。
嘗試刷新 client_secret 並運行php artisan cache:clear
和
composer dump-autoload
。 這對我來說可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.