Stripe Q51.Connect Standard アカウント連結後の返り値で、"refresh_token”も保存した方が良いですか?

StripeQA

目次一覧

 状態:-  閲覧数:426  投稿日:2019-08-01  更新日:2019-08-03  
Q51 / A

Q51-2.疑問事項を整理してみました / A


Q51 / A

 閲覧数:131 投稿日:2019-08-01 更新日:2019-08-02 

Q51


Connect Standard アカウント連結後の返り値で、"refresh_token”も保存した方が良いですか?
2019/8/1
'stripe_user_id'は固定値なので取得した方が良いのは分かるのですが、"refresh_token”も保存した方が良いですか?

「https://stripe.com/docs/connect/standard-accounts」で、 「"refresh_token”は、この最初のPOSTリクエストの後でしか取得できない」と掲載されていますが、何回か試すと毎回異なる値が返ってきます。

Q1.返り値に関して、'stripe_user_id'だけではなく"refresh_token"も保存した方が良いですか?

Q2."refresh_token"に毎回異なる値が返ってくるのは正常な状態ですか? それともリクエストの仕方がおかしい??
・リクエストする度に、"refresh_token"の値は更新されて、以前の"refresh_token"の値は使用できなくなる、ということですか?

Q3.Stripeのaccess_tokenの有効期限はありますか?

Q4.ざっくり言うと下記認識で合っていますか?
・access_tokenには有効期限があり、refresh_tokenには有効期限がない
・refresh_tokenを再発行すると、以前のrefresh_tokenは使用不可となる
・refresh_tokenを使用して、access_tokenを生成できる

A


> Q1.返り値に関して、'stripe_user_id'だけではなく"refresh_token"も保存した方が良いですか?
Standardアカウント上のリクエストはAccount headerを利用して、子アカウントへ認証いただくことが可能ですので"refresh_token"は必要になりません。しかし、access tokenにて認証を行うことをご検討いただいている場合や、新たなaccess tokenに更新する際に"refresh_token"が必要となりますので保存いただくことがよろしいかと存じます。こちらのドキュメントが参考になりますと幸いです:https://stripe.com/docs/connect/standard-accounts#token-request

> Q2."refresh_token"に毎回異なる値が返ってくるのは正常な状態ですか? それともリクエストの仕方がおかしい??
・リクエストする度に、"refresh_token"の値は更新されて、以前の"refresh_token"の値は使用できなくなる、ということですか?
各子アカウントへ付与される"refresh_token"はPOSTリクエストした際にのみ発行されます。 どのようにリクエストをされておりますでしょうか?
もし、新たなTokenにロールした場合は、過去のTokenはご利用いただけなくなります。

> Q3.Stripeのaccess_tokenの有効期限はありますか?
ございません

> Q4.ざっくり言うと下記認識で合っていますか?
・access_tokenには有効期限があり、refresh_tokenには有効期限がない
access_tokenには有効期限はございません。

>・refresh_tokenを再発行すると、以前のrefresh_tokenは使用不可となる
>・refresh_tokenを使用して、access_tokenを生成できる
refresh_tokenは、access_tokenを再発行するためにご利用いただけます。access_tokenを再発行されますと、以前のものはご利用いただけなくなります。

Q51-2.疑問事項を整理してみました / A

 閲覧数:130 投稿日:2019-08-02 更新日:2019-08-03 

Q51-2.疑問事項を整理してみました


疑問事項を整理してみました / Re: Connect Standard アカウント連結後の返り値で、"refresh_token”も保存した方が良いですか?
2019/8/2
回答内容が私には難しかったため、疑問事項を改めて整理してみました。


主に下記(「Connect OAuth」へのアクセス)に関する疑問です。

--------------------------------------------------------

リクエスト部分
▼index.html
<a href="https://connect.stripe.com/oauth/authorize?response_type=code&client_id=ca_「プラットフォーム提供者である親アカウント」の「クライアント ID」&scope=read_write&redirect_uri=https://xxxx/redirect.php ">redirect_uri指定した登録</a>


リダイレクト部分
▼redirect.php
define('CLIENT_ID', 'ca_xxxx'); //「プラットフォーム提供者である親アカウント」の「クライアント ID」
define('STRIPE_SECRET', 'sk_live_xxxx'); //「プラットフォーム提供者である親アカウント」の「本番シークレットキー」
define('TOKEN_URI', 'https://connect.stripe.com/oauth/token' );
define('AUTHORIZE_URI', 'https://connect.stripe.com/oauth/authorize' );
if (isset($_GET['code'])) {
 $code = $_GET['code'];
 $token_request_body = array(
    'client_secret' => STRIPE_SECRET,
    'grant_type' => 'authorization_code',
    'client_id' => CLIENT_ID,
    'code' => $code,
 );
 $ch = curl_init(TOKEN_URI);
 curl_setopt_array($ch, [
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_POST => true,
   CURLOPT_POSTFIELDS => http_build_query($token_request_body),
 ]);
  $respCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  $resp = json_decode(curl_exec($ch), true);
  curl_close($ch);
}


保存すべき結果対象
$resp['stripe_user_id']を保存
$resp['refresh_token']を保存

--------------------------------------------------------

< 上記処理の流れ >

処理1. ユーザーをプラットフォームに接続するため、https://connect.stripe.com/oauth/authorize エンドポイントへアクセス。結果をGETで受け取る

処理2.承認コードをアクセストークンに変換するため、https://connect.stripe.com/oauth/token エンドポイントへPOST送信
--------------------------------------------------------

< 通常の使用方法 >
・上記「処理1」+「処理2」後、$resp['stripe_user_id']を保存
・以降のリクエストでは「Stripe-Account header」利用
https://stripe.com/docs/connect/authentication#stripe-account-header

--------------------------------------------------------
Q1.上記index.htmlへのアクセスを2回実行した場合の意味は? そもそも(間違って)複数回実行しても問題ありませんか?
・2回目戻り値である$resp['stripe_user_id']は不変でした
・2回目戻り値である$resp['refresh_token']は変更されていました
・下記に該当しますか? 「新たなTokenにロール」が難しいのですが、新しいToken発行して紐づけたぐらいの意味ですか?
>新たなTokenにロールした場合は、過去のTokenはご利用いただけなくなります


Q2.(利用期限がない)access_tokenを再発行するケースの具体例について
・例えばどのような場面でaccess_tokenを再発行するのですか?
・下記で「いつでもユーザーによって無効にされる可能性があります」と掲載されていますが、ユーザーがaccess_tokenを無効にするケースとして具体的にはどのような場面が挙げられますか?
https://stripe.com/docs/connect/oauth-reference#post-token-request


Q3.>しかし、access tokenにて認証を行うことをご検討いただいている場合や
・(Account headerを利用せず、)「access tokenにて認証を行う」とは、具体的にどのようなケースが該当しますか?


Q4.>新たなaccess tokenに更新する際に"refresh_token"が必要となります
・「新たなaccess tokenに更新」とは、具体的にどのようなケースが該当しますか?
・「access token」の再発行とは異なる??

A


> Q1.上記index.htmlへのアクセスを2回実行した場合の意味は? そもそも(間違って)複数回実行しても問題ありませんか?
OAuthに関しまして、以下をご参考に処理いただけますと幸いです。
redirect_uriには、子アカウントがOAuthを完了した後に遷移させたいWebサイトページを指定します。

子アカウントが連携に成功しますと、redirect_uriに指定したURLに遷移されますが、その際にURLには以下のような情報が含まれます。
・scope  (scope=read_write)
・state の値
・Authorization code

御社はこの "authorization code"を取り出し、Stripe のaccess_token_urlエンドポイントへ以下のPOSTリクエストを行います。
curl https://connect.stripe.com/oauth/token \
 -d client_secret= Platform Secret API KEY \
 -d code="{AUTHORIZATION_CODE}" \
 -d grant_type=authorization_code

Stripeからのレスポンスには"Refresh Token"と"Access Token"が含まれますが、これは一度きりのみ発行されます。
一連の流れはこちらに記載がございます:https://stripe.com/docs/connect/standard-accounts#integrating-oauth


>Q2.(利用期限がない)access_tokenを再発行するケースの具体例について
・例えばどのような場面でaccess_tokenを再発行するのですか?
"access_token"は子アカウントのSecret Key として利用できますので、もし、"access_token"を保存される場合は、セキュリティの理由により定期的に新たな"access_token"に更新することをお勧めしております。

"access_token"、"refresh_token"、 や "stripe_publishable_key" は歴史的な理由などで存在しますが、基本的には、”stripe_user_id”のみの保存で大丈夫です。"access_token" は子アカウントの Secret Key として利用でき、"stripe_publishable_key"で子アカウントに代わってトークン作成などを行うことができます。
しかし、"Stripe-Account header" を利用することで、漏れてはならない 子アカウントのAPI キーを複数保存する負担が減ります。

>・下記で「いつでもユーザーによって無効にされる可能性があります」と掲載されていますが、ユーザーがaccess_tokenを無効にするケースとして具体的にはどのような場面が挙げられますか?
Standardアカウントの場合、各ユーザーは自身のダッシュボードにアクセスする権限がございます。そのため、子アカウント自身にてダッシュボードよりプラットフォームとの連携を解除した場合などには、無効になります。


Q3.>しかし、access tokenにて認証を行うことをご検討いただいている場合や
・(Account headerを利用せず、)「access tokenにて認証を行う」とは、具体的にどのようなケースが該当しますか?
上記のとおり、"access_token"は子アカウントのSecret API keyとして利用可能です。


Q4.>新たなaccess tokenに更新する際に"refresh_token"が必要となります
・「新たなaccess tokenに更新」とは、具体的にどのようなケースが該当しますか?
・「access token」の再発行とは異なる??
上記と重複しますが、"access_token"は子アカウントのSecret Key として利用できますので、もし、"access_token"を保存される場合は、セキュリティの理由により定期的に新たな"access_token"に更新(再発行)することをお勧めしております。


Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには?

Stripe Q52.Checkout\Sessionで1回限りの決済終了した際、添付メール自動送信することはできますか?

コメント投稿(ログインが必要)



類似度ページランキング
順位 ページタイトル抜粋
1 Stripe Q44。Standard アカウント連結後の返り値で、保存すべき値について 51
2 Stripe Q65.Connect Standard で連結されているStripeアカウントの違いについて 42
3 Stripe Q52.Checkout\Sessionで1回限りの決済終了した際、添付メール自動送信することはできますか? 41
4 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? 40
5 Stripe Q66.Webhookエンドポイントが、"connect"内容も含むかどうかを確認するためにはどうすれば良いですか? 40
6 Stripe Q49。 Connect 「Standardアカウント」で、自身の子アカウントでも商品販売する場合、被る不利益はありますか? 39
7 Stripe Q53.Checkout\Sessionの1回限りの支払いで、決済完了したユーザにだけページ表示させたい 39
8 Stripe Q56. 作成したCheckout\Sessionオブジェクトが破棄されるタイミングは? 38
9 Stripe Q21。新規顧客作成時に新規ソースオブジェクトを添付したいのですが、No such token: src_xxxxとなります 37
10 Stripe Q29。日本で、Connect Customアカウント を導入している事例について 37
11 Stripe Q59.Connect Standardアカウントで、親子アカウント情報を併用したい場合は、setApiKeyでStripeオブジェクト情報をその都度上書きしていくしかないのですか? 37
12 Stripe Q68.WebhookはPUT送信しているのですか? 37
13 Stripe Q11。テストAPIで、実際のカード番号を入力したらどうなりますか? 36
14 Stripe Connect Customアカウント の検討 36
15 日本で、Connect Standardアカウント を導入している(と思われる)事例 36
16 Stripe Q61. 「複数の1が複数のwebhookを停止しています」はどういう意味ですか? 36
17 Stripe Q60. Checkout\SessionオブジェクトとPaymentIntentオブジェクトの関係性は1対1ですか? 35
18 Stripe Q71.CheckoutSessionで、success_urlに指定したURLでzipダウンロードすると、success_urlへ遷移しない 35
19 Stripe Q10。Checkout の Simple で、「data-zip-code="true"」追加した場合について 35
20 Stripe Q46。Direct Charges で手数料聴取する場合、'payment_intent_data'の「有り」「無し」の違いは? 34
2021/12/01 21:13 更新
週間人気ページランキング / 11-24 → 11-30
順位 ページタイトル抜粋 アクセス数
1 Stripe Q11。テストAPIで、実際のカード番号を入力したらどうなりますか? | QA(Stripe) 16
2 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 15
3 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 14
3 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 14
4 その他エントリー(Stripe) カテゴリー 13
5 EMVCo | クレジットカード仕様(仕様) 11
6 Stripe Q47。Charge::create の 'receipt_email' について | QA(Stripe) 9
6 Sources and Customers / Sourceオブジェクト と Customerオブジェクト 9
6 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 9
7 機能一覧表 / Q.アカウント複数作成 / Stripeアカウント登録 7
8 クレジットカード決済代行サービス | 決済(Webサービスビジネス) 6
8 Payment Intents Usage Guide / Payment Intents 使用ガイド 6
9 投げ銭サービス | 課金販売できるプラットフォーム 5
9 Stripe Connect Customアカウント の検討 | Stripe 5
9 新 Stripe 内の選択肢 | その他エントリー(Stripe) 5
9 Stripe Q24。After attaching the source to the customer object, how do I check from the customer object? | QA(Stripe) 5
9 Stripe Q22。「新規Customerオブジェクト作成」と「'source'パラメータ指定タイミング」について | QA(Stripe) 5
9 Stripe Q31。ダッシュボードでの「支払い作成」の見方について | QA(Stripe) 5
10 為替取引の機能面による分類 / 為替取引の隔地者による分類 4
10 Stripe Q48。「Checkout\Session - server」「Charge」「PaymentIntent」の使い分け方 | QA(Stripe) 4
2021/12/1 1:01 更新