Google Ads Api Oauth Catchable Exception
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- php
- 領域
- api, authentication
調査の方向性
まず、報告された invalid_grant レスポンスを再現ケースとして使用し、vendor/google/auth/src/OAuth2.php と vendor/google/auth/src/Credentials/UserRefreshCredentials.php を通る期限切れ refresh token のパスを追跡します。どの例外が呼び出し元まで到達するのか、またライブラリが信頼できる処理ポイントを提供しているのかを確認します。失敗を区別して予測可能な形で処理でき、その動作についてのテストカバレッジまたはドキュメントがあれば完了です。
索引モデルが issue の本文から書いたものです。
説明
try {
// Generate a refreshable OAuth2 credential for authentication.
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId(env('GOOGLE_ADS_CLIENT_ID'))
->withClientSecret(env('GOOGLE_ADS_CLIENT_SECRET'))
->withRefreshToken($refreshToken)
->build();
} catch (\Throwable $e) {
return $this->job->fail();
}
try {
// Construct a Google Ads client configured from a properties file and the
// OAuth2 credentials above.
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withDeveloperToken(env('GOOGLE_ADS_DEVELOPER_TOKEN'))
->withLoginCustomerId($customerID)
->withTransport('rest')
->build();
} catch (\Throwable $e) {
return $this->job->fail();
}
So i have the code above which is using the google auth library to create the oauth credential, however some of our clients have expired refresh tokens: This spits out:
Message
Client error: POST https://oauth2.googleapis.com/token resulted in a 400 Bad Request response:
{
"error": "invalid_grant",
"error_description": "Token has been expired or revoked."
}
Level
ERROR
Exception
{
"class": "GuzzleHttp\\Exception\\ClientException",
"message": "Client error: `POST https://oauth2.googleapis.com/token` resulted in a `400 Bad Request` response:\n{\n \"error\": \"invalid_grant\",\n \"error_description\": \"Token has been expired or revoked.\"\n}\n",
"code": 400,
"file": "/usr/local/bigtop/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113",
"trace": [
"/usr/local/bigtop/vendor/guzzlehttp/guzzle/src/Middleware.php:69",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:204",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:153",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/TaskQueue.php:48",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:248",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:224",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:269",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:226",
"/usr/local/bigtop/vendor/guzzlehttp/promises/src/Promise.php:62",
"/usr/local/bigtop/vendor/guzzlehttp/guzzle/src/Client.php:123",
"/usr/local/bigtop/vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php:47",
"/usr/local/bigtop/vendor/google/auth/src/OAuth2.php:544",
"/usr/local/bigtop/vendor/google/auth/src/Credentials/UserRefreshCredentials.php:114",
"/usr/local/bigtop/vendor/google/auth/src/CredentialsLoader.php:214",
"/usr/local/bigtop/vendor/google/gax/src/CredentialsWrapper.php:208",
"/usr/local/bigtop/vendor/google/gax/src/Transport/HttpUnaryTransportTrait.php:111",
"/usr/local/bigtop/vendor/google/gax/src/Transport/RestTransport.php:110",
"/usr/local/bigtop/vendor/google/gax/src/GapicClientTrait.php:608",
"/usr/local/bigtop/vendor/google/gax/src/Middleware/CredentialsWrapperMiddleware.php:61",
"/usr/local/bigtop/vendor/google/gax/src/Middleware/FixedH
Is there a good way to be able to catch that since it's being caught inside the libraries and i'm not seeing a way to properly handle that exception.
- 主要言語
- PHP
- スター
- 1.4k
- フォーク
- 197
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
sync-en
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 4 日以内に返信
-
developer experience good first issue integrations task
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
az-digital/az_quickstart#6267 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 89/100
backdrop-contrib/commerce#65 ·