40

テスト ユーザーは、統合テストを行うのが得意です。

Facebookのoauth対応のものを開発するとき、プログラムでテストユーザーを作成し、アプリケーションの実際のユーザーとして使用できます。彼らは実際のユーザーと同じように振る舞います。唯一の違いは、サンドボックス化されていることです。

Googleはそのようなものを提供していますか?

彼らはすべてのサービスを oauth2 に移行しており、「実際の」ユーザーとの完全な統合テストを作成したいと考えています。

現在、私は統合テストを手動で実行し、要求に応じてアプリケーションを承認しています。明らかに、このアプローチは CI や真に自動化されたテストには適していません。

私が見る唯一の代替手段は、テストでのみ使用される実際のアカウントを作成し、その資格情報を使用してセレンなどとやり取りすることです。

他の選択肢は?

4

3 に答える 3

17

あなたの言うとおり、Google は Facebook のようにテスト ユーザー API を提供していません。次の 2 つのオプションがあると思います。

  1. あなたが述べたように、「実際の」Googleユーザーを使用してください。これにより、Google がこれらのアカウントをブロックしたり、実際のユーザーであるかどうかをテストするために追加のチェックを追加したり (電話による確認) したりすると、問題が発生する可能性があります。また、テスト スクリプトを壊す可能性のある AB テストも行います。

  2. Google サービスの代わりにモック サードパーティを使用します。これにより、一般的な oauth 統合コードがテストされますが、実際の G​​oogle サービスに対するテストほど確実ではありません。モック サービスを制御すると、この方法はより安定する可能性があります。

于 2013-12-15T13:09:26.727 に答える
7

プログラムでGoogleアクセストークンを取得する方法(自動テスト)?

  • Google コンソールでプロジェクトを作成します: https://console.cloud.google.com/

  • Credentials -> + CREATE CREDENTIALS -> OAuth クライアント IDに移動します。

  • https://developers.google.com/oauthplaygroundに移動します

  • 右上の設定 (歯車) アイコンを押します (OAuth 2.0 構成):

    • (!) 強制プロンプト: 同意画面
    • [独自の OAuth 資格情報を使用する] にチェックマークを付け、OAuth クライアント ID と OAuth クライアント シークレットを入力し、[OAuth 2.0 構成] 画面を閉じます。
  • ステップ 1のアコーディオン パネルの下部に、必要なスコープをスペースで区切って入力します ( https://developers.google.com/identity/protocols/oauth2/scopes#oauth2を参照)。

  • 次の画面でアカウントを選択し (オプションの画面)、アプリに権限を付与します。

  • その後、 https://developers.google.com/oauthplayground/?code=SOME-SINGLE-USE-CODE&scope=openid&..にリダイレクトされます。

  • トークンの Exchange 認証コードを押す

  • または手動で

    curl -v "https://oauth2.googleapis.com/token" -d "code=SOME-SINGLE-USE-CODE&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=YOUR_APP_CLIENT_ID&client_secret=YOUR_APP_CLIENT_SECRET&scope=&grant_type=authorization_code"
    
  • 無期限の更新トークンを取得します。

  • 最後にアクセストークンからアクセストークンを取得

  • または手動で:

    curl -d "client_id=YOUR_APP_CLIENT_ID&client_secret=YOUR_APP_CLIENT_SECRET&grant_type=refresh_token&refresh_token=YOUR_APP_REFRESH_TOKEN" "https://oauth2.googleapis.com/token"
    

検証:

curl "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=ACCESS_TOKEN"
{
  "id": "10934363016XXXXXXXXXX",
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GhoUlKjYgC-..."
}
于 2021-08-19T08:49:57.820 に答える
1

Google アカウントを作成し、Google Cloud Console内で簡単なプロジェクト/クライアントを構成できます。次に、oauth 用に構成し、googles oauth-playgroundを使用して更新トークン (期限切れにならない) を作成できます。

client-id、client-secret、および refresh-token を使用して、テストで post-request を googles auth-token エンドポイント ( https://www.googleapis.com/oauth2/v4/token) に送信し、有効な (短時間の) アクセス トークンを受け取ることができます。ここでは手動の手順は必要ありません。

このガイドでそれについて読みました。

于 2021-04-21T13:23:43.273 に答える