ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Google OAuth 2.0 のエラーレスポンス
Google の OAuth 2.0 エンドポイント(accounts.google.com/o/oauth2/v2/auth や oauth2.googleapis.com/token)が返すエラーは、RFC 6749 で定められた error / error_description の形式で返ります。原因究明には error_description と Cloud Console の OAuth クライアント設定の突き合わせが基本です。
// token エンドポイントの例
{
"error": "invalid_grant",
"error_description": "Token has been expired or revoked."
}
主要エラー一覧と対処
| error | 意味 | 主な原因 / 対処 |
|---|---|---|
invalid_request | パラメータ不足 / 形式不正 | 必須パラメータ(client_id, redirect_uri, response_type, scope)の漏れ。スペル / URL エンコードを確認 |
invalid_client | クライアント認証失敗 | client_id / client_secret の値が違う。シークレットを再生成して環境変数を更新 |
invalid_grant | 付与情報が無効 | リフレッシュトークン失効、認可コードを 2 回使った、コード期限切れ(数十秒)、ユーザがパスワード変更、未公開アプリで 7 日経過、時刻ずれ |
unauthorized_client | クライアントが許可されていない | そのクライアントタイプに許可されていないグラントを使った。Cloud Console のアプリ種別を確認 |
unsupported_grant_type | 未対応 grant_type | サポートされる: authorization_code / refresh_token / urn:ietf:params:oauth:grant-type:jwt-bearer |
invalid_scope | スコープ不正 | スコープ文字列のスペル誤り、有効化していない API のスコープ要求 |
access_denied | ユーザが同意を拒否 | 同意画面で「許可しない」を押した。アプリ未公開で対象外ユーザがログインした場合も発生 |
redirect_uri_mismatch | リダイレクト URI 不一致 | Cloud Console の「承認済みリダイレクト URI」と完全一致していない。プロトコル / ポート / 末尾スラッシュ / クエリすべて含む |
admin_policy_enforced | Workspace 管理者が制限 | 組織管理者がアプリを許可していない |
disallowed_useragent | 埋め込み WebView 拒否 | WebView / 古い UA からのログインは 2021 年以降不可。システムブラウザを使う |
org_internal | 組織内ユーザ限定 | 「内部」公開設定のアプリに組織外ユーザがアクセス |
deleted_client | 削除済みクライアント | Cloud Console で削除した client_id を使っている |
idpiframe_initialization_failed | 旧 GIS / GAPI クライアント側 | サードパーティ Cookie 無効化など。新 GIS(Google Identity Services)に移行 |
頻発: redirect_uri_mismatch
OAuth 開発で最も詰まるのがこれです。Google は文字列の完全一致を見ています。
| Cloud Console 登録 | リクエスト URI | 結果 |
|---|---|---|
http://localhost:3000/callback | http://localhost:3000/callback | OK |
http://localhost:3000/callback | http://localhost:3000/callback/ | NG(末尾スラッシュ) |
http://localhost:3000/callback | http://127.0.0.1:3000/callback | NG(ホスト名違い) |
https://app.example.com/cb | http://app.example.com/cb | NG(プロトコル違い) |
頻発: invalid_grant
下記いずれかで起きます。とくにリフレッシュトークンの失効条件を覚えておくとよいです。
- 認可コードを2 回トークンエンドポイントに送った
- 認可コードの有効期限切れ(数十秒〜数分)
- ユーザがパスワードを変更した、または「アカウントへのアクセス権を取り消し」した
- 未公開(テスト)アプリのリフレッシュトークンは7 日で失効
- サーバの時刻ずれ(JWT で
iat/expが不整合) - 1 ユーザあたり 100 個を超えるリフレッシュトークンを発行(古いものから失効)
同意のリセットと再取得
スコープを追加した、または失効したリフレッシュトークンを取り直したいときは、認可リクエストに prompt=consent と access_type=offline を付けます。
https://accounts.google.com/o/oauth2/v2/auth
?client_id=...
&redirect_uri=https://app.example.com/oauth/callback
&response_type=code
&scope=openid%20email%20profile
&access_type=offline (リフレッシュトークン要求)
&prompt=consent (毎回同意画面を出して再発行)
&state=xxxxxxxx
デバッグの手順
errorとerror_descriptionを必ずログに残す- Cloud Console の OAuth クライアント設定(種別 / 承認済み JS 元 / 承認済みリダイレクト URI)を再確認
- 使っているスコープに対応する API が「有効な API とサービス」で有効化されているか
- 未公開アプリならテストユーザに対象 Google アカウントを追加
- サーバ時刻が NTP で同期されているか確認
関連
- Google OAuth 2.0 — 親記事
- OAuth 2.0 — 標準仕様(RFC 6749)
- OpenID Connect — 認証層
- Google Cloud Console — クライアント管理
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?