生成 AI で非機密クライアントを連携する デベロッパ
最終更新:2026年8月15日
生成 AI で非機密クライアントを連携する
このページは、生成 AI を使って 非機密クライアント(clientType=public、認証方式 none)でアカウントを連携したいデベロッパ向けです。純 HTML、静的サイト、ブラウザのみのアプリに向きます。実行できるスクリプトは「Python の最小実行例」です。
プロジェクトにシークレットを保管できるサーバー、API Route、Serverless Function、BFF があるなら、機密クライアントにして「生成 AI で機密クライアントを連携する」を読んでください。
向いている / 向いていない
| 非機密クライアント向き | 機密クライアント向き |
|---|---|
| 純 HTML / 静的サイト / 純 SPA(トークン交換はブラウザ) | バックエンドセッションとシークレット管理がある Web アプリ |
| ローカルやデモ向けの軽いクライアント | Refresh Token と長期セッションが必要な製品 |
| シークレットを安全に埋め込めないデスクトップ / モバイル | サーバーからユーザーの代わりに保護 API を呼ぶ必要がある |
製品の取り決め(ポータルと同じ):
client_secretは発行しません。トークン交換で HTTP Basic を使わないでください。- PKCE(S256)必須。
refresh_tokenは発行しません。Access Token は約 5 分。期限切れ後は認可コードフローをやり直します。- リダイレクト URI は事前登録し、認可リクエストの
redirect_uriと1 文字単位で一致させてください。認可 URL は一度だけエンコードします(例:URLSearchParams/urllib.parse.urlencode)。すでにエンコードした URI を再度encodeしないでください。
ポータルで作成する
- develop.swaymoon.com にサインインし、識別子を開き、+ をクリックします。
- 説明に同意ページで識別できる名前。クライアント種類は 非機密クライアント(作成後に機密へは変えられません)。
- アイコンは既定、またはアップロードして切り抜き。
- リダイレクト URI にコールバックを登録。Python の非機密 demo は
http://127.0.0.1:8765/callbackです。 - 機能:必須の
openidを残す。必要に応じてemailとプロフィール細目(任意または必須。必須なら理由とプライバシーポリシー)。「権限と同意」を参照。 - 確認のあと「登録」をクリックし、
client_idをコピー(client_secretはありません)。
http://127.0.0.1 と http://localhost は別アドレスです。プロトコルパラメータは「認可コードと PKCE」。
プロンプトを AI に渡す
既存のフロント / 静的プロジェクトに連携するときは、次のプロンプトを貼れます(実トークンや完全なコールバッククエリは送らないでください):
現在の純フロント / 静的プロジェクトに「Swaymoon アカウント」サインインを連携してください(非機密クライアント)。
- clientType=public、認証方式 none。client_secret と HTTP Basic は禁止。
- Issuer:https://api-passport.swaymoon.com 。Discovery を正とする。
- Authorization Code + PKCE(S256)。換票フォームは grant_type、code、redirect_uri、client_id、code_verifier を含む。
- refresh_token なし。既定 scope は openid。必要なときだけ email またはプロフィール細目を足す。まとめた profile は使わない。
- state / code_verifier は sessionStorage。ユーザー識別は sub。登録すべき Redirect URI を出力する。
ローカル標準ライブラリでの連携は「Python の最小実行例」。サーバーがあるときのプロンプトは「生成 AI で機密クライアントを連携する」。
セキュリティの要点
- サインインと認可は公式アカウントドメインへ遷移させる。
client_idはフロントに出してよい。client_secretを捏造しない。- 最小の
scope。任意権限のキャンセルを尊重。UserInfo の未認可プロフィール項目は既定のプレースホルダ(「トークンとユーザー情報」)。 - 「サインイン維持」が必要なら、シークレットを置けるサーバーを入れ、機密クライアント + 自前セッションに切り替える。
トラブルシューティングは「例とトラブルシューティング」。