google oauth2にパラメータを追加する方法

PrStandup

以下のコードを使用して、googleoAuthで承認リクエストを作成しようとしています

$client = new Google_Client();
$client->setClientId('qweqweqweqwe');
$client->setClientSecret('vQWsd1Geweqweqweqwe');
$client->setRedirectUri('http://localhost/test1');

$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->setScopes(['https://www.googleapis.com/auth/gmail.readonly']);

if (request()->has('code')) {

    $credentials = $client->authenticate(request('code'));

    dd($credentials);

}

それは機能していますが、私の質問は次のとおりです。リクエストにユーザーIDを追加し、コールバックでそれを取り戻す方法はありますか?

レオ

そのパラメータを追加することの非常に良い点は、csrf攻撃も防ぐことです。

Googleの承認リクエストにパラメータを追加してからGoogleからのコールバックリクエストのパラメータを取得する方法は、base64エンコードされたjsonペイロードを設定することです。

承認URLを最初に生成する前に、URLパラメータをエンコードおよびデコードする2つの関数を含めます。簡単です。

public function base64UrlEncode($inputStr)
{
    return strtr(base64_encode($inputStr), '+/=', '-_,');
}


public function base64UrlDecode($inputStr)
{
    return base64_decode(strtr($inputStr, '-_,', '+/='));
}

Googleにoauthリクエストを作成し、urlparamsの例を作成します。

$params = base64UrlEncode('{ "a" : "b" , "c" : 1 }');

GoogleクライアントクラスにはsetState($state)、URLを作成する前に呼び出して$params、次のようなパラメータとして渡す必要のある関数があります

$client = new Google_Client();
$client->setClientId('qweqweqweqwe');
$client->setClientSecret('vQWsd1Geweqweqweqwe');

$params = base64UrlEncode('{ "a" : "b" , "c" : 1 }');
$client->setState($params);

$client->setRedirectUri('http://localhost/test1');

次に、応答には状態要求パラメータが含まれるため、コールバックルートで次のようにします。

Route::get('/callback', function(){


  $state = request()->get('state');    // GET['state'];
  $state = base64_decode(strtr($state, '-_,', '+/='));
  dd($state); // will output your params 
});

この回答は、以下に基づいています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Google Analytics API:OAuth2のスコープパラメータの欠落エラーを解決する方法は?

分類Dev

Google Cloud Tasksにパラメーターを追加する

分類Dev

Google Cloud Tasksにパラメーターを追加する

分類Dev

GolangでOAuth2を使用してGoogle電子メールを正しく取得する方法

分類Dev

nodejs google apiを使用して、ブラウザなしでEC2インスタンスからOAuth2トークンを取得する方法

分類Dev

phpGETリクエストをGoogleコンタクトに送信する方法apiv3 OAuth2

分類Dev

Goでgoogle oauth2を使用する

分類Dev

Google Data Studioで2つのパラメータを分割する方法は?

分類Dev

Google OAuth2:必須パラメーターがありません:grant_type

分類Dev

エラー:invalid_request必要なパラメーターがありません:スコープ(Google OAuth2を使用したRestify&Passportjs)

分類Dev

GoogleのOpenIDConnectによると:OAuth 2パラメーターは単一の値のみを持つことができます:client_id

分類Dev

Google PlacesAPIのjsonResponseからパラメータを取得する方法

分類Dev

oAuth2を使用してサーバー間で通信する方法(Google Cloud Engine-> Google App Engine)

分類Dev

Google に対して Spring Boot OAuth2 を使用して認証するときに、Google ユーザーのメールをホワイトリストに登録する方法

分類Dev

oauth2とAngularJSを使用してWebAPIのトークンに追加のパラメーターを送信する

分類Dev

postman:Google OAuth2を使用するWebアプリを認証する方法は?

分類Dev

GoogleのOAuth2実装でユーザーのメールアドレスを*のみ*取得する方法はありますか?

分類Dev

マーカー クラスタラーを Google マップに追加する方法

分類Dev

ボタンを追加してGoogleマップフラグメントにオーバーレイする方法

分類Dev

GoogleドライブSDKとOAuth2に関する優れたチュートリアルですか?

分類Dev

GoogleのGuiceプロバイダーにパラメーターを提供する方法は?

分類Dev

開発者キー(OAuth2ではない)でGoogleクラウドストレージAPIを使用する

分類Dev

OAuth2 Google APIからメールとプロファイル情報を取得するにはどうすればよいですか?

分類Dev

OAuth2を使用してGoogleに対してプログラムで認証する

分類Dev

Google APIでoauth2と更新トークンを使用するにはどうすればよいですか?

分類Dev

Google Cloud puppeteer関数内で2つのパラメーターを渡す方法は?JSONへの要求に解決する

分類Dev

XSLTでGoogleマップのinitmapにパラメータを渡す方法は?

分類Dev

Googleコンタクトに2番目のストリートラインを追加する方法StructuredPostalAddres(GData)

分類Dev

Google CloudSQLでpostgresql.confパラメータを変更する方法

Related 関連記事

  1. 1

    Google Analytics API:OAuth2のスコープパラメータの欠落エラーを解決する方法は?

  2. 2

    Google Cloud Tasksにパラメーターを追加する

  3. 3

    Google Cloud Tasksにパラメーターを追加する

  4. 4

    GolangでOAuth2を使用してGoogle電子メールを正しく取得する方法

  5. 5

    nodejs google apiを使用して、ブラウザなしでEC2インスタンスからOAuth2トークンを取得する方法

  6. 6

    phpGETリクエストをGoogleコンタクトに送信する方法apiv3 OAuth2

  7. 7

    Goでgoogle oauth2を使用する

  8. 8

    Google Data Studioで2つのパラメータを分割する方法は?

  9. 9

    Google OAuth2:必須パラメーターがありません:grant_type

  10. 10

    エラー:invalid_request必要なパラメーターがありません:スコープ(Google OAuth2を使用したRestify&Passportjs)

  11. 11

    GoogleのOpenIDConnectによると:OAuth 2パラメーターは単一の値のみを持つことができます:client_id

  12. 12

    Google PlacesAPIのjsonResponseからパラメータを取得する方法

  13. 13

    oAuth2を使用してサーバー間で通信する方法(Google Cloud Engine-> Google App Engine)

  14. 14

    Google に対して Spring Boot OAuth2 を使用して認証するときに、Google ユーザーのメールをホワイトリストに登録する方法

  15. 15

    oauth2とAngularJSを使用してWebAPIのトークンに追加のパラメーターを送信する

  16. 16

    postman:Google OAuth2を使用するWebアプリを認証する方法は?

  17. 17

    GoogleのOAuth2実装でユーザーのメールアドレスを*のみ*取得する方法はありますか?

  18. 18

    マーカー クラスタラーを Google マップに追加する方法

  19. 19

    ボタンを追加してGoogleマップフラグメントにオーバーレイする方法

  20. 20

    GoogleドライブSDKとOAuth2に関する優れたチュートリアルですか?

  21. 21

    GoogleのGuiceプロバイダーにパラメーターを提供する方法は?

  22. 22

    開発者キー(OAuth2ではない)でGoogleクラウドストレージAPIを使用する

  23. 23

    OAuth2 Google APIからメールとプロファイル情報を取得するにはどうすればよいですか?

  24. 24

    OAuth2を使用してGoogleに対してプログラムで認証する

  25. 25

    Google APIでoauth2と更新トークンを使用するにはどうすればよいですか?

  26. 26

    Google Cloud puppeteer関数内で2つのパラメーターを渡す方法は?JSONへの要求に解決する

  27. 27

    XSLTでGoogleマップのinitmapにパラメータを渡す方法は?

  28. 28

    Googleコンタクトに2番目のストリートラインを追加する方法StructuredPostalAddres(GData)

  29. 29

    Google CloudSQLでpostgresql.confパラメータを変更する方法

ホットタグ

アーカイブ