OAuth 2.0
業界標準の OAuth 2.0 を使用し、ユーザーに代わって Stripe API へのリクエストを認証します。
OAuth を使用したユーザー認証は次の手順で行います。
- お客様のサイトで、ユーザーがリンクをクリックすると、Stripe にリダイレクトされます。
- Stripe で、ユーザーは、適切なアカウントを選択して、アプリをインストールする権限を受け取ります。
- アプリがインストールされると、認証が完了し、ユーザーは定義された URI にリダイレクトされます。

アプリを開発する
CLI で
stripe apps create <app-name>
を実行して、Stripe アプリを作成します。アプリのマニフェストで次のフィールドを編集します。
stripe_
をapi_ access_ type oauth
に設定します。distribution_
をtype public
に設定します。allowed_
を設定します。これは、ユーザーが OAuth を使用してアプリをインストールした後にリダイレクトされる URL です。リストの最初の URL がデフォルトのリダイレクト先として使用されます。redirect_ uris
アプリのマニフェストは以下のようになります。
stripe-app.json{ "id": "com.example.my-app", "version": "0.0.1", "name": "Your Stripe App", "icon": "./[YOUR_APP]_icon_32.png", "permissions": [ // Your app permissions here ], "stripe_api_access_type": "oauth", "distribution_type": "public", "allowed_redirect_uris": [ // Your redirect URIs here ] }
アプリに必要な権限をすべて追加します。
「(オプション)」UI Extensions をアプリに追加します。ユーザーが設定を行ったり、アプリのドキュメントへのリンクを追加したりできるように、設定ビューを追加することをお勧めします。
アプリを Stripe にアップロードします。
Command Linestripe apps upload
アプリをテストする
- アプリの詳細ページに移動します。
- 外部テストタブを開き、始めるをクリックして外部テストを設定します。
- OAuth をテストセクションにある認証リンクにアクセスします。このリンクを使用すると、異なるアカウントでテストすることができます。
OAuth インストールリンクを作成する
ウェブページから、次のパラメーターを指定して OAuth インストールリンクにリダイレクトします: https://marketplace.
。
Stripe は、本番環境とテスト環境の両方に対応するリンクを生成します。リンクは外部テストタブにあります。

セキュリティのヒント
CSRF 攻撃を防止するには、推奨される state
パラメーターを追加し、一意のトークンを値として渡します。Stripe は、お客様のサイトにユーザーをリダイレクトするときに、指定された state
を含めます。サイトでは、state
パラメーターが変更されていないことを確認できます。詳細については、URL パラメーターをご覧ください。
アプリを公開
Stripe App Marketplace にアプリを公開する準備ができたら、アプリを提出して審査を受けます
OAuth アプリを審査のために提出する際は、マーケットプレイスのインストール URL を指定する必要があります。この URL は、前のステップの OAuth インストールリンクを使用して、明確な手順が記載された、アカウント登録とインストールプロセスを開始できるページにリンクしている必要があります。
アプリの審査に入力するインストール URL が、「設定」タブ内にある公開 OAuth リンクを使用していることを確認してください。

注
公開 OAuth インストールリンクは、アプリが公開されるまで機能しません。ただし、Stripe のアプリ審査チームは、このリンクからアプリをインストールしてテストすることができます。
アプリをインストールして認証する
- ブラウザーで、OAuth インストールリンクを開きます。クエリパラメーターを調整して、リダイレクト URL をアプリが対応している URL に変更できます。
- アプリをインストールするための権限を表示して受け入れます。URL パラメーターを指定していない場合、インストールが完了すると、ユーザーはお客様がアプリのマニフェストで定義した最初のコールバック URL にリダイレクトされます。
アクセストークンの認証コードを交換する
コールバック URL が OAuth 認証コードパラメーターを受信します。バックエンドはその OAuth 認証コードを API アクセストークンおよびリフレッシュトークンと交換する必要があります。この認証コードを使用するのは 1 回限りで、5 分間だけ有効であるため、その間にバックエンドは認証コードをアクセストークンと交換しなくてはなりません。バックエンドコードに OAuth クライアントライブラリを使用して実装する必要があるコマンドを以下に示します。
curl -X POST https://api.stripe.com/v1/oauth/token \ -u sk_live_***: \ -d code=ac_*** \ -d grant_type=authorization_code
注
該当する環境のアプリ開発者 API キーを使用する必要があります。これを有効にするには、state
内で該当する環境を渡します。
上記の curl
コマンドのレスポンス例を以下に示します。
{ "access_token": "{{ ACCESS_TOKEN }}", "livemode": true, "refresh_token": "{{ REFRESH_TOKEN }}", "scope": "stripe_apps", "stripe_publishable_key": "pk_live_***", "stripe_user_id": "acct_***", "token_type": "bearer" }
アクセストークンを更新する
アクセストークンの有効期限は 1 時間、リフレッシュトークンの有効期限は 1 年間です。リフレッシュトークンは交換のたびに更新されるため、新しいリフレッシュトークンの有効期限は常に、そのトークンが生成された時点または更新された時点から 1 年後の日付になります。1 年以内にリフレッシュトークンをアクセストークンに交換すると、リフレッシュトークンが有効期限日を迎えることはありません。
以下は、シークレットキーを使用してアクセストークンをリフレッシュトークンに交換する同等の curl
コマンドです。
curl -X POST https://api.stripe.com/v1/oauth/token \ -u sk_live_***: \ -d refresh_token={{ REFRESH_TOKEN }} \ -d grant_type=refresh_token
レスポンス例を以下に示します。
{ "access_token": "{{ ACCESS_TOKEN }}", "livemode": true, "refresh_token": "{{ REFRESH_TOKEN }}", "scope": "stripe_apps", "stripe_publishable_key": "pk_live_***", "stripe_user_id": "acct_***", "token_type": "bearer" }
新しいリフレッシュトークンを取得し、以前のリフレッシュトークンを有効期限切れにします。リフレッシュトークンはバックエンドに安全に保管し、Stripe ユーザーに代わって Stripe API にアクセスするときにいつでもそのリフレッシュトークンを使用して、新しいアクセストークンを取得する必要があります。
よくある間違い
アクセストークンを更新すると、必要な権限がないことを示すエラーが表示される場合があります。このエラーが表示された場合は、API コールの承認にアカウントのシークレットキーを使用していること、および誤ってリフレッシュトークン、アクセストークン、または制限付きキーを使用していないことを確認してください。
次の例のように Stripe API にリクエストして、アクセストークンを検証します。
curl https://api.stripe.com/v1/customers \ -u "{{ ACCESS_TOKEN }}"