このドキュメントでは、スマートフォン、タブレット、Android スマートフォンなどのデバイスに コンピュータは、Google の OAuth 2.0 エンドポイントを使用して、 YouTube Analytics API または YouTube Reporting API を介してクエリできます。
OAuth 2.0 を使用すると、ユーザーは特定のデータをアプリケーションと共有する一方で、 機密情報を保護することです。 たとえば、アプリケーションは OAuth 2.0 を使用して権限を取得できます。 を使用してチャンネルの YouTube アナリティクスのデータを取得できます。
インストール済みのアプリは個々のデバイスに配信されるため、それらのアプリは シークレットを保持できません。ユーザーはアプリを開いているときや バックグラウンドで実行されています。
この承認フローは、Terraform ワークフローの ウェブサーバー アプリケーション。主な違いは システム ブラウザを開き、ローカル リダイレクト URI を指定して Google の承認サーバーから返されるレスポンスを照合します。
代替手段
モバイルアプリでは、Google ログインを Android または iOS:Google ログイン 認証とユーザーの認可はクライアント ライブラリで処理します。また、使用が簡単なほうが 実装されているプロトコルよりも優れています。
システム ブラウザをサポートしていないデバイスまたは入力が制限されているデバイスで実行されているアプリの場合 機能(テレビ、ゲーム機、カメラ、プリンタなど)については、 テレビおよびデバイス または「テレビや入力が制限されているデバイスでログインする」といった機能を試します。
ライブラリとサンプル
OAuth 2.0 フローの実装には、次のライブラリとサンプルが役立ちます。 次のとおりです。
- Android 用 AppAuth ライブラリ
- iOS 用 AppAuth ライブラリ
- アプリ用の OAuth: Windows サンプル
前提条件
プロジェクトでAPI を有効にする
Google API を呼び出すアプリケーションでは、 API Console。
プロジェクトで API を有効にするには:
- Open the API Library Google API Console。
- If prompted, select a project, or create a new one.
- [ライブラリ] ページで YouTube Analytics API と YouTube Reporting API を見つけて有効にします。YouTube アナリティクスのデータを取得する多くのアプリケーションも、YouTube Data API とやり取りします。アプリケーションで使用する他の API を見つけて、それらも有効にします。
承認認証情報を作成する
OAuth 2.0 を使用して Google API にアクセスするアプリケーションには、認証情報が必要です。 アプリケーションを識別する API を Google の OAuth 2.0 サーバーに提供します。次の手順では、 プロジェクトの認証情報を作成します。これにより、アプリケーションは認証情報を使用して API にアクセスできるようになります。 有効にする必要があります
- Go to the Credentials page.
- [認証情報を作成] > [OAuth クライアント ID] をクリックします。
- 以降のセクションでは、Google の利用するクライアントの種類について説明します。 サポートしています。推奨のクライアント タイプを選択します OAuth クライアントに名前を付けて、フォーム内の他のフィールドを あります。
Android
- アプリケーションの種類として [Android] を選択します。
- OAuth クライアントの名前を入力します。この名前はプロジェクトの Credentials page : クライアントを識別します。
- Android アプリのパッケージ名を入力します。この値は
<ph type="x-smartling-placeholder"></ph>
<manifest>
要素のpackage
属性 追加します。 - アプリの配布物の SHA-1 署名証明書フィンガープリントを入力します。
- アプリで Google Play アプリ署名、SHA-1 フィンガープリントを追加します。
- 独自のキーストアと署名鍵を管理している場合は、keytool ユーティリティを使用してください
を使用して、人が読める形式で証明書情報を出力します。「
「
Certificate fingerprints
」セクションのSHA1
値 keytool の出力。詳しくは、 クライアントの認証の Android 用 Google API のドキュメントをご覧ください。
- (省略可)Android の所有権を確認する 説明します。
- [作成] をクリックします。
iOS
- アプリケーションの種類として [iOS] を選択します。
- OAuth クライアントの名前を入力します。この名前はプロジェクトの Credentials page : クライアントを識別します。
- アプリのバンドル ID を入力します。バンドル ID は
CFBundleIdentifier
キーをアプリ情報プロパティ リスト リソース ファイル(info.plist)に追加します。この値
[全般] ペインや [署名と署名] ペインで[Capabilities]ペインでは
Xcode プロジェクト エディタです。バンドル ID は、Google Cloud コンソールの [全般情報] セクションに
アプリの [App Information] ページを
Apple の App Store Connect サイト。
アプリのバンドル ID が正しいことをご確認ください。バンドル ID には App Check 機能を使用している場合は変更できます。
- (オプション)。
アプリが Apple の App Store で公開されている場合は、アプリの App Store ID を入力します。店舗 ID すべての Apple App Store の URL に含まれる数値文字列です。
- アプリ Apple App Store アプリ ダウンロードしてください。
- 自分のアプリを探します。
- [共有] ボタン(四角形と上矢印)を選択します。
- [リンクをコピー] を選択します。
- コピーしたリンクをテキスト エディタに貼り付けます。URL の最後の部分が App Store ID です。
例:
https://apps.apple.com/app/google/id284815942
- (オプション)。
チーム ID を入力します。詳しくは、 チーム ID を確認する を参照してください。
注: クライアントに対して App Check を有効にする場合、[チーム ID] フィールドは必須です。 - (オプション)。
iOS アプリで App Check を有効にします。App Check を有効にすると、Apple の App Attest サービス を使用して、OAuth クライアントからの OAuth 2.0 リクエストが正規のものであることを確認するために使用します。 アプリからのアクセスなどですこれにより、 アプリのなりすましのリスクを軽減できます App Check の有効化の詳細 をご覧ください。
- [作成] をクリックします。
UWP
- アプリケーションの種類として [Universal Windows Platform] を選択します。
- OAuth クライアントの名前を入力します。この名前はプロジェクトの Credentials page : クライアントを識別します。
- アプリの 12 文字の Microsoft Store ID を入力してください。この値は Microsoft パートナー センター 日付 アプリ ID [アプリ管理] セクションで
- [作成] をクリックします。
UWP アプリの場合、カスタム URI スキームは 39 文字以下にする必要があります。
アクセス スコープを特定する
スコープを使用すると、アプリケーションは必要なリソースへのアクセスのみをリクエストできるだけでなく、 ユーザーがアプリケーションに付与するアクセス権の量を制御できます。したがって、 リクエストするスコープの数と、問題が発生する可能性と ユーザーの同意を得る
OAuth 2.0 認証の実装を開始する前に、 権限が必要であることを通知します。
YouTube Analytics API では、次のスコープを使用します。
スコープ | |
---|---|
https://www.googleapis.com/auth/youtube | YouTube アカウントの管理 |
https://www.googleapis.com/auth/youtube.readonly | YouTube アカウントの表示 |
https://www.googleapis.com/auth/youtubepartner | YouTube のアセットや関連するコンテンツの表示と管理 |
https://www.googleapis.com/auth/yt-analytics-monetary.readonly | YouTube コンテンツに関する YouTube アナリティクスの収益レポートと非収益レポートの表示 |
https://www.googleapis.com/auth/yt-analytics.readonly | YouTube コンテンツの YouTube アナリティクス レポートの表示 |
YouTube Reporting API では次のスコープを使用します。
スコープ | |
---|---|
https://www.googleapis.com/auth/yt-analytics-monetary.readonly | YouTube コンテンツに関する YouTube アナリティクスの収益レポートと非収益レポートの表示 |
https://www.googleapis.com/auth/yt-analytics.readonly | YouTube コンテンツの YouTube アナリティクス レポートの表示 |
OAuth 2.0 API スコープのドキュメントに、 Google API へのアクセスに使用できるスコープのリスト。
OAuth 2.0 アクセス トークンの取得
次の手順は、アプリケーションが Google の OAuth 2.0 サーバーとやり取りして認証情報を取得する方法を示しています。 ユーザーの代わりに API リクエストを実行することへのユーザーの同意。アプリケーションは、 ユーザーの承認を必要とする Google API リクエストを実行する前に、ユーザーの同意を得る必要があります。
ステップ 1: コードベリファイアとチャレンジを生成する
Google は Proof Key for Code Exchange をサポートしています (PKCE)プロトコルを使用して、インストール済みアプリのフローの安全性を高めます。一意のコード検証ツールが、 「code_challenge」と呼ばれるその変換された値が、 使用して認証コードを取得します。
コード検証ツールを作成する
code_verifier
は、予約されていない暗号を使用する高エントロピーの暗号ランダムな文字列です。
文字 [A ~ Z] / [a ~ z] / [0 ~ 9] / "-"/ "."/「_」/「~」(半角 43 文字以上)
最大文字数は 128 文字です。
コード検証ツールには、値を推測することが実用的にならないように十分なエントロピーが必要です。
コード チャレンジを作成する
コードチャレンジを作成する方法は 2 つあります。
コード チャレンジの生成方法 | |
---|---|
S256(推奨) | コードのチャレンジは、Base64URL(パディングなし)でエンコードされたコードの SHA256 ハッシュです。
検証できます。
|
プレーン | コード チャレンジは、上で生成したコード検証ツールと同じ値です。
|
ステップ 2: Google の OAuth 2.0 サーバーにリクエストを送信する
ユーザーの承認を得るには、Google の承認サーバーにリクエストを
https://accounts.google.com/o/oauth2/v2/auth
。このエンドポイントは、アクティブ セッションのルックアップ、
ユーザーが認証を行い、ユーザーの同意を得る。エンドポイントには SSL 経由でのみアクセス可能で、
HTTP(非 SSL)接続を拒否します。
認可サーバーは、インストール済みのアプリケーションについて次のクエリ文字列パラメータをサポートしています。 アプリケーション:
パラメータ | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
必須
アプリケーションのクライアント ID。この値は API Console Credentials page。 |
||||||||||||||||||
redirect_uri |
必須
Google の承認サーバーがアプリにレスポンスを送信する方法を指定します。他にも インストール済みアプリで使用できるリダイレクト オプションが複数あり、 特定のリダイレクト方法を使用した認可認証情報 念頭に置いてください この値は、OAuth 2.0 で承認されたリダイレクト URI のいずれかと完全に一致する必要があります。
これは、クライアント センター(MCC)アカウントで
API Console
Credentials page。この値が一致する
次の表に、適切な
|
||||||||||||||||||
response_type |
必須
Google OAuth 2.0 エンドポイントが認証コードを返すかどうかを決定します。 インストール済みアプリのパラメータ値を |
||||||||||||||||||
scope |
必須
スペース区切り アプリケーションがアクセスできるリソースを識別するスコープのリスト 委任できます。これらの値は、Google がユーザーに表示する同意画面を できます。 スコープを使用すると、アプリケーションは必要なリソースへのアクセスのみをリクエストできるようになります。 付与するアクセス権のレベルも制御できます 説明します。したがって、リクエストされるスコープの数には逆相関があります。 ユーザーの同意を得る可能性などです。 YouTube Analytics API では、次のスコープを使用します。
YouTube Reporting API では次のスコープを使用します。
OAuth 2.0 API スコープのドキュメントでは、 Google API へのアクセスに使用できるスコープの完全なリスト。 |
||||||||||||||||||
code_challenge |
推奨
サーバーサイドで使用される、エンコードされた |
||||||||||||||||||
code_challenge_method |
推奨
使用される |
||||||||||||||||||
state |
推奨
アプリケーション間で状態を維持するために、アプリケーションが使用する文字列値
認可リクエストと認可サーバーのレスポンスで構成されます。
サーバーは、送信したコードを このパラメータは、ユーザーを
アプリケーション内の適切なリソースの確認、ノンスの送信、クロスサイト リクエストの軽減
できます。 |
||||||||||||||||||
login_hint |
省略可
認証しようとしているユーザーをアプリケーションで認識している場合は、このパラメータを使用できます。 Google 認証サーバーにヒントを提供します。サーバーはヒントを使用して、 ログイン フォームのメール フィールドにあらかじめ入力するか、 適切なマルチログインセッションを選択します パラメータ値には、メールアドレスまたは |
サンプル認証 URL
以下のタブは、さまざまなリダイレクト URI オプションの認証 URL の例を示しています。
各 URL は、ユーザーの ID 情報を取得するアクセスを許可するスコープへのアクセスをリクエストします。 YouTube アナリティクスのレポート。redirect_uri
パラメータの値を除き、URL は同じです。URL
必須の response_type
パラメータと client_id
パラメータも含まれています。
省略可能な state
パラメータとして渡します。各 URL には、改行とスペースが挿入されており、
できます。
カスタム URI スキーム
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=com.example.app%3A/oauth2redirect& client_id=client_id
ループバック IP アドレス
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyt-analytics.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=http%3A//127.0.0.1%3A9004& client_id=client_id
ステップ 3: Google がユーザーに同意を求める
このステップでは、要求されたアクセス権をアプリケーションに付与するかどうかをユーザーが決定します。この アプリケーションの名前と Google API を示す同意ウィンドウが ユーザーの認証情報を使ってアクセス権限をリクエストしている 付与するアクセス スコープの概要。「 ユーザーは、アプリケーションによって要求された 1 つ以上のスコープへのアクセス権の付与に同意できます。 拒否されます。
この段階でアプリケーションは、 アクセス権が付与されたかどうかを示す Google の OAuth 2.0 サーバー。レスポンスの説明については、 行います。
エラー
Google の OAuth 2.0 認可エンドポイントへのリクエストで、ユーザー向けのエラー メッセージが表示されることがある 認証と認可のフローの代わりに使用されます。一般的なエラーコードと推奨 以下を参照してください。
admin_policy_enforced
次のポリシーにより、Google アカウントはリクエストされた 1 つ以上のスコープを承認できません Google Workspace 管理者が 手動で行う必要はありませんGoogle Workspace 管理者用ヘルプ記事をご覧ください <ph type="x-smartling-placeholder"></ph> どの第三者と内部アプリが Google Workspace データにアクセスする 管理者がすべてのスコープまたは機密 / 機密情報へのアクセスを制限する方法について詳しくは、 OAuth クライアント ID にアクセスが明示的に付与されるまで、制限付きのスコープを設定できます。
disallowed_useragent
認可エンドポイントが、Google の許可されていない埋め込みユーザー エージェント内に表示される OAuth 2.0 ポリシー
Android
Android デベロッパーが認証リクエストを開くと、このエラー メッセージが表示されることがあります。
android.webkit.WebView
。
代わりに、次のような Android ライブラリを使用する必要があります。
Android 向け Google ログインまたは OpenID Foundation
Android 用の AppAuth。
このエラーは、Android アプリが ユーザーが Google の OAuth 2.0 認可エンドポイントに移動すると、 できます。デベロッパーは、一般的なリンクを オペレーティング システムには、 Android アプリリンク デフォルトのブラウザアプリを使用できます。「 Android カスタムタブ ライブラリもサポートされています。
iOS
iOS および macOS のデベロッパーにおいて、承認リクエストを Google 管理コンソールで開くと、このエラーが発生する場合があります
WKWebView
。
代わりに、次のような iOS ライブラリを使用する必要があります。
iOS 向け Google ログインまたは OpenID Foundation
iOS 用の AppAuth。
このエラーは、iOS アプリまたは macOS アプリで一般的なウェブリンクが
ユーザーが埋め込みユーザー エージェントを作成し、ユーザーが Google の OAuth 2.0 認可エンドポイントに
できます。デベロッパーは、一般的なリンクを
オペレーティング システムには、
ユニバーサル リンク
デフォルトのブラウザアプリを使用できます。「
SFSafariViewController
ライブラリもサポートされています。
org_internal
リクエストの OAuth クライアント ID は、プロジェクト内の Google アカウントへのアクセスを制限する <ph type="x-smartling-placeholder"></ph> Google Cloud 組織。 この設定オプションの詳細については、 ユーザーの種類 (OAuth 同意画面の設定に関するヘルプ記事)をご覧ください。
invalid_grant
複数の
コード検証ツールと
チャレンジでは、code_callenge
パラメータが無効であるか、存在しません。必ず、
code_challenge
パラメータが正しく設定されている。
アクセス トークンを更新するとき、トークンの有効期限が切れているか、 無効になりました ユーザーを再度認証し、新しいトークンを取得するためのユーザーの同意を求めます。続行する場合 このエラーを表示するには、アプリケーションが正しく構成されていて、 正しいトークンとパラメータを使用して検証する必要があります。それ以外の場合、ユーザー アカウントに 削除されたか無効になっています
redirect_uri_mismatch
承認リクエストで渡された redirect_uri
が、承認済みのものと一致しません
OAuth クライアント ID のリダイレクト URI。URL にある承認済みのリダイレクト URI を
Google API Console Credentials page。
渡された redirect_uri
が、クライアント タイプに対して無効である可能性があります。
redirect_uri
パラメータは、以下を含む OAuth 帯域外(OOB)フローを指すことがあります。
非推奨となり、サポートされなくなりました。詳しくは、
移行ガイドを参照し、
統合されています
invalid_request
リクエストになんらかの問題がありました。これには、いくつかの理由が考えられます。
- リクエストの形式が正しくありません
- リクエストに必須パラメータが含まれていませんでした
- リクエストで、Google でサポートされていない認証方法が使用されています。OAuth を確認する 推奨される統合方法が使用されています
- リダイレクト URI にカスタム スキームが使用されている : エラー メッセージ「 カスタム URI スキームは Chrome アプリでサポートされていません または カスタム URI スキーム が Android クライアントで有効になっていない場合は、カスタム URI を使用していることを意味します。 このスキームは Chrome アプリでサポートされていないため、 Android。カスタム URI スキームの詳細 代替手段
ステップ 4: OAuth 2.0 サーバー レスポンスを処理する
アプリケーションが承認レスポンスを受信する方法は、
リダイレクト URI スキームを指定します。どのようなスキームであっても、
レスポンスには、認証コード(code
)またはエラーが含まれます。
(error
).たとえば、error=access_denied
はユーザーが
リクエストを拒否しました。
ユーザーがアプリケーションへのアクセスを許可したら、認証コードを 更新トークンが必要です。
ステップ 5: 認証コードを交換して更新とアクセスを行う トークン
認証コードをアクセス トークンと交換するには、
https://oauth2.googleapis.com/token
エンドポイントを指定し、次のパラメータを設定します。
フィールド | |
---|---|
client_id |
API Consoleから取得したクライアント ID Credentials page。 |
client_secret |
API Consoleから取得したクライアント シークレット。 Credentials page。 |
code |
最初のリクエストから返された認証コード。 |
code_verifier |
先ほど作成したコード検証ツールは ステップ 1. |
grant_type |
OAuth 2.0 の
の場合、このフィールドの値を authorization_code に設定する必要があります。 |
redirect_uri |
プロジェクトのリダイレクト URI の 1 つを
API Console
指定された の Credentials page
client_id 。 |
次のスニペットはサンプル リクエストを示しています。
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google はこのリクエストに対して、有効期間の短いアクセス権を含む JSON オブジェクトを返します。 更新トークンの 2 つです
レスポンスには、次のフィールドが含まれます。
フィールド | |
---|---|
access_token |
Google API リクエストを承認するためにアプリケーションが送信するトークン。 |
expires_in |
アクセス トークンの残りの存続期間(秒)。 |
id_token |
注: このプロパティは、リクエストに ID スコープが含まれていた場合にのみ返されます。
(openid 、profile 、email など)。値は
JSON Web Token(JWT)。デジタル署名された ID 情報が
できます。 |
refresh_token |
新しいアクセス トークンの取得に使用できるトークン。更新トークンは、更新トークンが ユーザーがアクセス権を取り消します。 インストールされているアプリケーションに対しては、更新トークンが常に返されることに注意してください。 |
scope |
access_token によって付与されるアクセスのスコープ。次のリストで表されます。
スペースで区切られ、大文字と小文字が区別されます。 |
token_type |
返されるトークンのタイプ。現時点では、このフィールドの値は常に
Bearer 。 |
次のスニペットは、レスポンスの例を示しています。
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/yt-analytics.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Google API の呼び出し
アプリケーションがアクセス トークンを取得したら、そのトークンを使用して Google Cloud API を呼び出すことができます。
API の代理操作です。
ユーザー アカウント(API に必要なアクセス スコープが付与されている場合)そのためには
API へのリクエストでアクセス トークン(access_token
クエリまたは
パラメータまたは Authorization
HTTP ヘッダー Bearer
値を指定します。可能であれば
クエリ文字列はサーバーログに表示される傾向があるため、HTTP ヘッダーの使用をおすすめします。ほとんどの
クライアント ライブラリを使用して Google API の呼び出しを設定できます(例:
YouTube Analytics API の呼び出しをご覧ください)。
YouTube Analytics API では、このサービス アカウントはサポートされていません。 できます。YouTube Reporting API は、 複数の YouTube チャンネルを所有、管理する YouTube コンテンツ所有者 レコード レーベルや映画スタジオです。
すべての Google API を試して、 OAuth 2.0 Playground。
HTTP GET の例
呼び出しは、
<ph type="x-smartling-placeholder"></ph>
reports.query
エンドポイント(YouTube Analytics API)に Authorization: Bearer
HTTP を使用
次のようになります。独自のアクセス トークンを指定する必要があります。
GET /youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
次に、access_token
を使用して、認証されたユーザーに対して同じ API を呼び出します。
クエリ文字列パラメータ:
GET https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
curl
の例
これらのコマンドは、curl
コマンドライン アプリケーションを使用してテストできます。こちらが
HTTP ヘッダー オプションを使用した例(推奨):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
または、クエリ文字列パラメータ オプションを使用します。
curl https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
アクセス トークンをリフレッシュする
アクセス トークンは定期的に期限切れになり、関連する API リクエストに対する無効な認証情報になります。マイページ ユーザーが許可を求めることなくアクセス トークンを更新できる トークンに関連付けられたスコープへのオフライン アクセスをリクエストした場合。
アクセス トークンを更新するために、アプリケーションは HTTPS POST
を送信します。
Google の承認サーバー(https://oauth2.googleapis.com/token
)にリクエストを送信し、
次のパラメータが含まれます。
フィールド | |
---|---|
client_id |
API Consoleから取得したクライアント ID。 |
client_secret |
API Consoleから取得したクライアント シークレット。
(client_secret は、
Android、iOS、Chrome アプリケーションなど)で使用できます。
|
grant_type |
として
OAuth 2.0 仕様
このフィールドの値は refresh_token に設定する必要があります。 |
refresh_token |
認証コードの交換から返された更新トークン。 |
次のスニペットはサンプル リクエストを示しています。
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& client_secret=your_client_secret& refresh_token=refresh_token& grant_type=refresh_token
ユーザーがアプリケーションに付与したアクセス権を取り消さない限り、トークン サーバーは 新しいアクセス トークンを含む JSON オブジェクトを返します。次のスニペットは レスポンス:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "token_type": "Bearer" }
発行される更新トークンの数には上限があります。1 個につき 1 回 全クライアントでユーザーごとに 1 つずつ 異なる組み合わせで作成できます更新トークンを保存する必要がある 保持され、有効な間は継続して使用できます。アプリケーションが リクエストが多すぎると、これらの上限に達する可能性があります。その場合、古い更新トークン 動作しなくなります。
トークンの取り消し
アプリケーションに付与したアクセス権の取り消しをユーザーが希望する場合があります。ユーザーはアクセス権を取り消すことができます <ph type="x-smartling-placeholder"></ph>にアクセス アカウント設定。詳しくは、 削除 第三者のサイトやアプリの [サイトまたはアプリのアクセス] セクションでアカウントにアクセスできるアプリ サポート ドキュメントをご覧ください。
また、アプリケーションに付与されているアクセス権をプログラムで取り消すこともできます。 プログラムによる取り消しは、ユーザーが登録解除を行ったり、 API リソースが大幅に変化した場合。つまり 削除プロセスの一部に API リクエストを含めることで、 削除されます。
プログラムでトークンを取り消すには、アプリケーションがトークンを
https://oauth2.googleapis.com/revoke
。トークンをパラメータとして含めます。
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \ https://oauth2.googleapis.com/revoke?token={token}
トークンは、アクセス トークンまたはリフレッシュ トークンです。トークンがアクセス トークンであり、 更新すると、更新トークンも取り消されます。
取り消しが正常に処理されると、レスポンスの HTTP ステータス コードに
200
。エラー状態の場合は、HTTP ステータス コード 400
が返されます。
エラーコードが表示されます
アプリのリダイレクト方法
カスタム URI スキーム(Android、iOS、UWP)
カスタム URI スキームはディープリンクの一種で、カスタム定義のスキームを使用してアプリを開きます。
<ph type="x-smartling-placeholder">Android でのカスタム URI スキームの使用に代わる方法
こちらの Android 向け Google ログイン SDK この方法では、OAuth 2.0 レスポンスがアプリに直接配信されるため、 指定します。
Android 用 Google ログイン SDK に移行する方法
Android で OAuth 統合にカスタム スキームを使用する場合は、次の操作を行う必要があります。 推奨される Google ログインの使用に完全に移行するには、以下の対応を行ってください Android SDK:
- Google ログイン SDK を使用するようにコードを更新します。
- Google API Console でカスタム スキームのサポートを無効にします。
Google Sign-In Android SDK に移行する手順は次のとおりです。
-
Google Sign-In Android SDK を使用するようにコードを更新します。
<ph type="x-smartling-placeholder">
- </ph>
-
コードを調べて、現在の状態を特定する
Google の OAuth 2.0 サーバーにリクエストを送信するカスタム スキームを使用している場合、リクエストは次のようになります。
https://accounts.google.com/o/oauth2/v2/auth? scope=<SCOPES>& response_type=code& &state=<STATE>& redirect_uri=com.example.app:/oauth2redirect& client_id=<CLIENT_ID>
com.example.app:/oauth2redirect
は、カスタム スキームのリダイレクト URI です。 使用します。詳しくは、 <ph type="x-smartling-placeholder"></ph> 形式の詳細に関するredirect_uri
パラメータの定義 カスタム URI スキームの値です。 -
リクエスト パラメータをメモする
scope
とclient_id
をメモします。 Google ログイン SDK を構成する必要があります。 <ph type="x-smartling-placeholder"> -
詳しくは、
<ph type="x-smartling-placeholder"></ph>
Android アプリへの Google ログインの統合を開始する
SDK の設定手順が表示されます。スキップして
再利用する手順と同じように、バックエンド サーバーの OAuth 2.0 クライアント ID を取得する手順を使用します。
前の手順で取得した
client_id
。 -
詳しくは、
<ph type="x-smartling-placeholder"></ph>
サーバーサイドの API アクセスを有効にする
できます。これには次の手順が含まれます。
<ph type="x-smartling-placeholder">
- </ph>
-
getServerAuthCode
メソッドを使用して、認証コードを取得します。 スコープを指定します。 - 認証コードをアプリのバックエンドに送信して、アクセスと引き換えに更新 あります。
- 取得したアクセス トークンを使用して、ユーザーの代わりに Google API を呼び出します。
-
-
コードを調べて、現在の状態を特定する
Google の OAuth 2.0 サーバーにリクエストを送信するカスタム スキームを使用している場合、リクエストは次のようになります。
-
Google API Console でカスタム スキームのサポートを無効にします。
<ph type="x-smartling-placeholder">
- </ph>
- 次に移動してください: OAuth 2.0 認証情報 Android クライアントを選択します。
- [詳細設定] セクションに移動し、 [Enable Custom URI Scheme] チェックボックスをオンにして、[Save] をクリックして カスタム URI スキームのサポートを無効にします。
カスタム URI スキームを有効にする
推奨される代替方法が使用できない場合は、カスタム URI スキームを 次のとおりです。 <ph type="x-smartling-placeholder">- </ph>
- 次に移動してください: OAuth 2.0 認証情報のリストと Android クライアントを選択します。
- [Advanced Settings] セクションに移動し、 [Enable Custom URI Scheme] チェックボックスをオンにして、[Save] をクリックして有効にします。 サポートしています。
Chrome アプリでカスタム URI スキームを使用しない方法
こちらの Chrome Identity API この方法では、OAuth 2.0 レスポンスがアプリに直接配信されるため、 指定します。
ループバック IP アドレス(macOS、Linux、Windows デスクトップ)
この URL を使用して認証コードを受け取るには、アプリケーションが ローカル ウェブサーバー。これは多くのプラットフォームで利用できるわけではありませんが、すべてのプラットフォームで利用できるわけではありません。ただし、ご利用のプラットフォームが サポートされているため、認証コードを取得するために推奨されるメカニズムです。
承認応答を受け取ったら、ユーザビリティを最適にするために、アプリが承認の応答期限を ブラウザを閉じてアプリに戻るようユーザーに指示する HTML ページを表示する。
推奨される使用方法 | macOS、Linux、Windows のデスクトップ アプリ(ユニバーサル Windows プラットフォームを除く) |
フォームの値 | アプリケーション タイプを [デスクトップ アプリ] に設定します。 |
手動でのコピーと貼り付け(非推奨)
アプリを保護する
アプリの所有権を確認する(Android、Chrome)
アプリの所有権を確認することで、アプリのなりすましのリスクを軽減できます。
Android
<ph type="x-smartling-placeholder">確認プロセスを完了するには、Google Play デベロッパー アカウントを使用してください ID があり、アプリが Google Play Console:次の 次の要件を満たしている必要があります。
- Google Play Console に、 使用している Android OAuth クライアントと同じパッケージ名と SHA-1 署名証明書フィンガープリントを 確認を完了する必要があります。
- そのアプリの管理者権限が必要です。 Google Play Console。 詳細 Google Play Console でのアクセス管理について学びました。
Android クライアントの [Verify App Ownership] セクションで、 [所有権を確認] ボタンをクリックして、確認プロセスを完了します。
検証が成功すると、成功したことを確認する通知が表示されます。 確認プロセスに関するものです。それ以外の場合は、エラー プロンプトが表示されます。
確認に失敗した問題を解決するには、次のことをお試しください。
- 検証対象のアプリが Google Play Console で登録済みアプリであることを確認します。
- 管理ページでアプリの管理者権限があることを確認してください Google Play Console。
Chrome
確認プロセスを完了するには、Chrome ウェブストア デベロッパー アカウントを使用します。 適格性確認を成功させるには、次の要件を満たす必要があります。
- 登録されているアイテムが Chrome ウェブストア デベロッパー ダッシュボード (完了しようとしている Chrome 拡張機能 OAuth クライアントと同じアイテム ID を持つこと) 確認します。
- Chrome ウェブストア アイテムのパブリッシャーである必要があります。 詳細 をご覧ください。
Chrome 拡張機能クライアントの [アプリの所有権の確認] セクションで、 [所有権を確認] ボタンをクリックして、確認プロセスを完了します。
注: 許可するかどうかを選択できます
検証が成功すると、成功したことを確認する通知が表示されます。 確認プロセスに関するものです。それ以外の場合は、エラー プロンプトが表示されます。
確認に失敗した問題を解決するには、次のことをお試しください。
App Check(iOS のみ)
「 App Check 機能 は、Apple の App Attest サービスを使用して、Google に送信されたリクエストが OAuth 2.0 エンドポイントは正規のアプリケーションから発信されます。これにより、 アプリのなりすましのリスクも軽減できます。
iOS クライアントで App Check を有効にする
iOS クライアントで App Check を有効にするには、次の要件を満たす必要があります。 <ph type="x-smartling-placeholder">- </ph>
- iOS クライアントのチーム ID を指定する必要があります。
- バンドル ID は複数のアプリに解決される可能性があるため、バンドル ID にはワイルドカードを使用しないでください。この は、バンドル ID にアスタリスク(*)記号を含めることはできません。
App Check を有効にすると、お使いのデバイスからの OAuth リクエストに関連する指標が表示されるようになります。 アクセスするには、OAuth クライアントの編集ビューで次の操作を行います。未確認のソースからのリクエストはブロックされません App Check を適用するまで表示されません。[ 指標のモニタリング ページは、適用を開始するタイミングを判断するのに役立ちます。
iOS アプリで App Check を有効にすると、App Check 機能に関連するエラーが表示されることがあります。宛先 エラーを修正するには、次の手順をお試しください。
- 指定したバンドル ID とチーム ID が有効であることを確認します。
- バンドル ID にワイルドカードを使用していないことを確認します。
iOS クライアントに App Check を適用する
アプリで App Check を有効にしても、認識されないリクエストが自動的にブロックされることはありません。適用方法: iOS クライアントの編集ビューに移動してください。App Check の指標が表示され、 [Google Identity for iOS] セクションの下にあります。指標には 次の情報を参照してください。 <ph type="x-smartling-placeholder">- </ph>
- 確認済みリクエストの数 - 有効な App Check トークンを持つリクエスト。Google Chat の設定 App Check の適用を有効にすると、このカテゴリのリクエストのみが成功します。
- 未検証のリクエストの数: 古いクライアント リクエストの数 - App Check トークンこれらのリクエストは、 App Check 実装。
- 未確認リクエストの数: オリジン不明のリクエスト - App Check が設定されていないリクエスト アプリから送信されていないように見える トークンを生成することもできます
- 未検証のリクエストの数: 無効なリクエスト - App Check が無効なリクエスト (アプリのなりすましを試みている偽のクライアントからのトークンや、 必要があります。
App Check を適用するには、[適用] ボタンをクリックして選択内容を確定します。適用後 が有効である場合、クライアントからの未検証のリクエストはすべて拒否されます。
注: 適用を有効にしてから変更が反映されるまでに最長で 15 分ほどかかることがあります。 できます。
iOS クライアントで App Check の適用を解除する
アプリに対して App Check の適用を解除すると、適用が停止され、 は、クライアントからの Google OAuth 2.0 エンドポイントへのすべてのリクエストを許可します。これには、未検証のエンドポイントも含まれます。 できます。
iOS クライアントで App Check の適用を解除するには、iOS クライアントの編集ビューに移動し、 [UNENFORCE] ボタンをクリックして選択内容を確定します。
注: App Check の適用を解除してから、変更が反映されるまでに最長で 15 分ほどかかることがあります。 できます。
iOS クライアントで App Check を無効にする
アプリで App Check を無効にすると、すべての App Check モニタリングが停止し、 適用。検討事項 適用を解除して、モニタリングを継続できるようにします。 確認しましょう
iOS クライアントで App Check を無効にするには、iOS クライアントの編集ビューに移動し、 [OAuth クライアントを Firebase App Check で不正行為から保護] 切り替えボタンをオフにします。
注: App Check を無効にした後、変更が反映されるまでに最長で 15 分ほどかかることがあります できます。
関連情報
IETF のベスト プラクティス OAuth 2.0 for ネイティブ アプリは、ここに記載されているベスト プラクティスの多くを確立しています。
クロスアカウント保護機能の実装
ユーザーのプライバシー保護のためにクロスアカウントの実装が Google のクロスアカウント保護サービスを利用して保護します。このサービスを使用すると、 セキュリティ・イベント通知をサブスクライブして、 ユーザー アカウントに大幅な変更が加えられる可能性があります。その後、状況に応じて、この情報を使用して 決める方法を決めることです。
Google のクロスアカウント保護サービスからアプリに送信されるイベントタイプの例を以下に示します。
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
-
https://schemas.openid.net/secevent/oauth/event-type/token-revoked
-
https://schemas.openid.net/secevent/risc/event-type/account-disabled
詳しくは、 <ph type="x-smartling-placeholder"></ph> クロスアカウント保護ページでユーザー アカウントを保護する をご覧ください。