簡體   English   中英

Laravel \\ Socialite \\ 2 \\ InvalidStateException Facebook Socialite 中沒有消息錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM