開発者向け「%BRAND% でログイン」(OAuth 2.1 / OpenID Connect)
標準の OAuth 2.1 と OpenID Connect で、あなたのアプリに「%BRAND% でログイン」を追加します。アプリの作成、PKCE、JWKS による ES256 の ID トークンの検証、許可されたスコープでの API 呼び出しを説明します。
開発者コンソールでは誰でもアプリを作成し、%BRAND% のアカウントでログインしてもらえます。%BRAND% にログイン済みの人は「許可」を押すだけです。見せる情報は本人が選び、アカウント → アプリと API からいつでも連携を解除できます。
1. アプリを作成
/developers で「新しいアプリ」を押し、次を入力します。
- 名前、アイコン、ホームページとプライバシーポリシーの URL(必須)。同意画面に表示されます。
- リダイレクト URI(1 行に 1 つ)。完全一致が必要です。ワイルドカード、末尾のスラッシュの違い、クエリの違いはすべて不可です。https のみで、ネイティブアプリはループバック(
http://127.0.0.1/...、ポートは任意)とカスタムスキームも使えます。 - アプリの種類:「サーバーアプリ」には client secret が発行されます(表示は 1 回だけ、保存はハッシュのみ)。「ブラウザ / ネイティブアプリ」にはシークレットはありません。
無料プランでは 3 個、Pro では 10 個まで作成できます。新しいアプリには「未確認」と表示され、審査されるまで利用者は 100 人までです。
2. 認可画面へ移動
GET https://widgetstore.net/oauth/authorize
?response_type=code
&client_id=wsc_...
&redirect_uri=https://example.com/auth/callback
&scope=openid profile email
&state=<ランダム>
&nonce=<ランダム>
&code_challenge=<BASE64URL(SHA256(verifier))>
&code_challenge_method=S256
- すべてのアプリで PKCE(S256)が必須です。 サーバーアプリも同じです。
- 戻ってきた
stateが同じか確認してください(CSRF 対策)。issも返します。 prompt=noneは画面を出さずに確認します。ログイン済みで同意済みならコードを返し、そうでなければlogin_requiredかconsent_requiredを返します。prompt=consentは必ず同意画面を表示します。
3. コードを交換
POST https://widgetstore.net/widget/api/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret) # サーバーアプリのみ
grant_type=authorization_code&code=...&code_verifier=...&redirect_uri=...
access_token(1 時間)、refresh_token(使うたびに新しくなり、古いものを再利用すると認可全体が取り消されます)、id_token が返ります。コードは 1 回だけ使え、10 分で期限切れになります。
4. ID トークンを検証
- ES256 で署名しています。公開鍵は
https://widgetstore.net/widget/api/oauth/jwks(kidで選択)。 issがhttps://widgetstore.net、audがあなたの client ID であること、exp、nonceが一致することを確認してください。subはあなたのアプリ専用です。同じ人でもほかのアプリでは別のsubになるため、アプリ間で人を結び付けることはできません。- クレームは本人が許可したスコープに応じます。
profile→name、picture、email→email、email_verified。
ディスカバリー:https://widgetstore.net/.well-known/openid-configuration。UserInfo:アクセストークンで GET https://widgetstore.net/widget/api/oauth/userinfo。
スコープ
| スコープ | 取得できるもの |
|---|---|
openid | ログインに必須 |
profile | ニックネームとアイコン |
email | 確認済みのメールアドレス |
read、write:* | オープン API と MCP でウィジェット、ページ、データを読み書き |
ルール
- 必要なスコープだけを求めてください。
profileとemailは本人が外せます。 - %BRAND% のパスワードやメールの確認コードを尋ねないでください。
- あなたのアプリでログアウトしたらトークンを取り消してください:
POST https://widgetstore.net/widget/api/oauth/revoke。 - 誤解を招くアプリやデータを悪用するアプリは停止することがあります。停止中は新しい認可もトークンの更新もできません。
最終更新:2026年11月14日