Laravel 5.8中的ArgumentCountError

时间:2019-08-02 22:32:37

标签: php laravel

我正在尝试使用socialite将社交身份验证添加到Laravel 5.8 API项目中。

当尝试处理社交提供回调时,ArgumentCountError会抛出在这里

  

函数App \ Http \ Controllers \ SocialAuthController :: handleProviderCallback()的参数太少,传递了0个且恰好期望1个

错误是指此代码块的第一行

public function handleProviderCallback($provider)
{
    // retrieve social user info
    $socialUser = Socialite::driver($provider)->stateless()->user();

    // check if social user provider record is stored
    $userSocialAccount = SocialAccount::where('provider_id', $socialUser->id)->where('provider_name', $provider)->first();

    if ($userSocialAccount) {

        // retrieve the user from users store
        $user = User::find($userSocialAccount->user_id);

        // assign access token to user
        $token = $user->createToken('Pramopro')->accessToken;

        // return access token & user data
        return response()->json([
            'token' => $token,
            'user'  => (new UserResource($user))
        ]);
    } else {

        // store the new user record
        $user = User::create([
            'name'                  => $socialUser->name,
            'username'             => $socialUser->email,
            'email_verified_at'    => now()
        ]);

        ...

        // assign passport token to user
        $token = $user->createToken('******')->accessToken;


        // return response
        return response()->json(['token' => $token]);
    }
}

下面是我设置其他代码的方式。我添加的env中的第一个拳头

GOOGLE_CLIENT_ID=******
GOOGLE_CLIENT_SECRET=*******
GOOGLE_CALLBACK_URL=https://staging.appdomain.com/api/v1/user

然后修改web.php

Auth::routes(['verify' => true]);

Route::get('/auth/{provider}', 'SocialAuthController@redirectToProvider');

Route::get('/auth/{provider}/callback', 'SocialAuthController@handleProviderCallback');

最后在google应用中,我添加了uri路径,在成功通过身份验证后,用户将被重定向到该路径

https://staging.appdomain.com/api/v1/user 

我该如何解决?

1 个答案:

答案 0 :(得分:0)

成功认证之后,应该重定向到用户的回调uri显然没有被缓存。因此,运行php artisan route:cache可以解决此问题。