具有护照不支持的授权类型的Laravel社交名流

具有护照不支持的授权类型的Laravel社交名流,laravel,Laravel,我正在尝试生成一个具有访问权限的承载令牌,并在用户使用socialite进行身份验证后刷新令牌 public function handleProviderCallback($provider, EmailConfirmationMailer $mailer) { $user = Socialite::driver($provider)->user(); if(User::where('email', '=', $user->getEmail())->exist

我正在尝试生成一个具有访问权限的承载令牌,并在用户使用socialite进行身份验证后刷新令牌

public function handleProviderCallback($provider, EmailConfirmationMailer $mailer)
{
    $user = Socialite::driver($provider)->user();
    if(User::where('email', '=', $user->getEmail())->exists()){
        $exist_user = User::where('email', '=', $user->getEmail())->first();
        Auth::loginUsingId($exist_user->id);
        $http = new GuzzleHttp\Client;
        $response = $http->post('http://localhost:8000/oauth/token', [
            'form_params' => [
                'grant_type' => 'refresh_token',
                'refresh_token' => 'the-refresh-token',
                'client_id' => 1,
                'client_secret' => 'c4ojSmOjl04QrshdSXlOmbKUOIxm6zqyhND34AT0',
                'scope' => '',
            ],
        ]);
        return json_decode((string) $response->getBody(), true);
    }else{
        //create new user here
    }
}
我从vendor\laravel\socialite\src\Two\AbstractProvider.php获得错误 用户函数,消息为“”


针对这种情况的最佳做法是什么?非常感谢您的帮助。

在不使用refreshToken的情况下生成accessToken:

public function handleProviderCallback($provider)
{
    $user = Socialite::driver($provider)->user();
    if(User::where('email', '=', $user->getEmail())->exists()){
        $existUser = User::where('email', '=', $user->getEmail())->first();
        Auth::login($existUser,true);
        //remove existing tokens from user
        $tokenResult = $existUser->createToken('Personal Access Token');
        return \response()->json([
            'token_type'    =>  'Bearer',
            'expires_in'    =>  $tokenResult->token->expires_at->diffInSeconds(Carbon::now()),
            'access_token'  =>  $tokenResult->accessToken,
            'info'          =>  'Existing user'
        ]);
    }else{
        //create new user entry
    }
}

我试图使用user->createToken直接获取访问令牌,但无法从$token获取刷新令牌。
public function handleProviderCallback($provider)
{
    $user = Socialite::driver($provider)->user();
    if(User::where('email', '=', $user->getEmail())->exists()){
        $existUser = User::where('email', '=', $user->getEmail())->first();
        Auth::login($existUser,true);
        //remove existing tokens from user
        $tokenResult = $existUser->createToken('Personal Access Token');
        return \response()->json([
            'token_type'    =>  'Bearer',
            'expires_in'    =>  $tokenResult->token->expires_at->diffInSeconds(Carbon::now()),
            'access_token'  =>  $tokenResult->accessToken,
            'info'          =>  'Existing user'
        ]);
    }else{
        //create new user entry
    }
}