Socialite在Laravel中间件中不起作用,如何解决此问题?

问题描述 投票:0回答:1

我正在使用Socialite进行Google身份验证,我有一个中间件来检查用户是否通过他们的google_id存在于我的本地数据库中,它可以重定向到/ home页面,否则它将重定向回到Google身份验证页面,而这样做,我在中间遇到问题,错误是:

客户端错误:POST https://www.googleapis.com/oauth2/v4/token导致400 Bad Request响应:{“错误”:“无效请求”,“错误说明”:“缺少所需参数:代码”}

]

中间件

<?php

namespace App\Http\Middleware;
//use Socialite;
use App\GmailAccount;
use Closure;

use Laravel\Socialite\Facades\Socialite;

use Illuminate\Support\Facades\Auth;

class GoogleAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        $user = Socialite::driver('google')->stateless()->user();

        $finduser = GmailAccount::where('google_id', $user->id)->first();

        if($finduser){
            return $next($request);
        }

        else{
            return route('/logingoogle');
        }

    }
}

路线

Route::group(['middleware' => 'App\Http\Middleware\GoogleAuth'], function()
{
    Route::get('/home', 'HomeController@index')->name('home');

});

Route::get('/logingoogle', 'GoogleController@google_login');

Route::get('auth/google', 'GoogleController@redirectToGoogle');

Route::get('auth/google/callback', 'GoogleController@handleGoogleCallback');
laravel google-oauth laravel-socialite
1个回答
0
投票
您可以尝试这个吗?

if($finduser) { auth()->login($finduser), true); } else { return redirect('/logingoogle'); }

© www.soinside.com 2019 - 2024. All rights reserved.