简体   繁体   English

Laravel 社交名流通过谷歌登录刷新令牌是 null

[英]Laravel socialite through google login refresh token is null

We are using some of the google API functions so we need the access_token but the refresh_token seems null even I add 'access_type'=>'offline' in the driver.我们正在使用一些谷歌 API 函数,所以我们需要access_tokenrefresh_token似乎 null 即使我在驱动程序中添加了'access_type'=>'offline' Did I miss something?我错过了什么?

Here is my code这是我的代码

    public function redirectToProvider(){
        $scopes = array(
            // 'https://www.googleapis.com/auth/business.manage',
            'https://www.googleapis.com/auth/plus.business.manage'
        );


        return Socialite::driver('google')->scopes($scopes)->with(['access_type'=>'offline'])->redirect();
    }

The saving part储蓄部分

public function googleAuthenticate(){
        try {
            $user = Socialite::driver('google')->stateless()->user();
            $existingUser = GoogleUsers::where('email', $user->email)->first();
          
            if($existingUser){
                // dd($user);
                // $token = $user->token;
                // $refreshToken = $user->refreshToken; 
                // $expiresIn = $user->expiresIn;
                dd($user);
                return response()->json('Existing User');
             
            } else {
                $token = $user->token;
                $refreshToken = $user->refreshToken; 
                $expiresIn = $user->expiresIn;
               
                $newUser                  = new GoogleUsers;

                dd($user);

                $newUser->name            = $user->name;
                $newUser->email           = $user->email;
                $newUser->google_id       = $user->id;
                $newUser->created_at      = Carbon::now()->toDateTimeString();
                $newUser->access_token    = $user->token;
                $newUser->refresh_token   = $user->refreshToken;
                $newUser->save();
  
                // return \Redirect::route('home');
                return response()->json($token);
            }
    
            } catch (\Exception $e) {
                return response()->json($e);
        }
    }

When i do a dd($user) Here is the result当我做一个dd($user)这是结果

Laravel\Socialite\Two\User {#317 ▼
  +token: "ya29.a0AfH6SMBcFflxhdL2RKY6k0xqIFBHqqPHaJSJPoBV2n79ozewB-9RFnBWqXJITUNyAyZlYKyOYjj0QKDDdNOREbitm13TRp4WvD2tGhCTjpcAStukUND-h59Ga0jIh27ay9JN3BQ3MyfmWwimOqryZsFWwJqy_QfVtE4He5eoVpO2mA ◀"
  +refreshToken: null
  +expiresIn: 3599
  +id: "117177930435384486747"
  +nickname: null
  +name: "Michael koh"
  +email: "user@gmail.com"
  +avatar: "https://lh6.googleusercontent.com/-Jv5Xr7SXjuE/AAAAAAAAAAI/AAAAAAAAAAA/AMZuucmNjvnp4o-Qc4Au8yMTA1XIwjw_cA/photo.jpg"
  +user: array:11 [▶]
  +"avatar_original": "https://lh6.googleusercontent.com/-Jv5Xr7SXjuE/AAAAAAAAAAI/AAAAAAAAAAA/AMZuucmNjvnp4o-Qc4Au8yMTA1XIwjw_cA/photo.jpg"
}

try this尝试这个

 public function redirectToProvider(){
        $scopes = array(
            'https://www.googleapis.com/auth/plus.business.manage'
        );

        $parameters = ['access_type' => 'offline', "prompt" => "consent select_account"];
  
        return Socialite::driver('google')->scopes($scopes)->with($parameters)->redirect();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM