簡體   English   中英

Laravel 社交名流通過谷歌登錄刷新令牌是 null

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

我們正在使用一些谷歌 API 函數,所以我們需要access_tokenrefresh_token似乎 null 即使我在驅動程序中添加了'access_type'=>'offline' 我錯過了什么?

這是我的代碼

    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();
    }

儲蓄部分

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);
        }
    }

當我做一個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"
}

嘗試這個

 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