プラットフォームテクノロジー - ユーザー認証の概要
ログイン認証
タオバオ オープン プラットフォームに接続する際に、アプリケーションがユーザーのプライバシー データ (製品、注文など) を取得する必要がある場合は、ユーザーのセキュリティとプライバシーを確保します。ユーザー データ、アプリケーションが必要とするユーザーの承認を取得します。つまり、ユーザー データにアクセスするためのアクセス トークン (元の SessionKey) を取得します。この場合、アプリケーションは Taobao アカウントを使用して「ログイン認証」プロセスをユーザーに案内する必要があります。このプロセスでは、国際的に受け入れられている OAuth2.0 標準プロトコルをユーザー認証および認可プロトコルとして使用し、Web サイト、モバイル クライアント、およびデスクトップ クライアントをサポートします。
現在、Taobao OAuth2.0 サービスでは、サーバー側フローとクライアント側フローの 2 つのアクセス トークン (認可トークン) 取得方法をサポートしています。詳細については、次の手順を参照してください。
注: タオバオ ID (タオバオ アカウント) 製品は、タオバオ購入者にタオバオ メンバーシップ サービス (注文照会、物流追跡など) を提供するアリババ グループの非公式チャネルには使用できません。不正使用が発見されると、オープン プラットフォームは直ちにアプリキーのタオバオ ID 使用許可 を取り消します。
特別な注意事項
このドキュメントで説明されている認証ページは、PC 側にのみ適用されます。ページがモバイル淘宝/Tmall クライアントで使用されている場合アクセス方法はこちらをご参照ください。 H5モバイルブラウザでアクセスされた場合はこちらをご参照ください。
1. サーバー側のフロー
このプロセスでは、ISV アプリケーションに、アプリケーション自体のキーとステータスを保存できる Web サーバー アプリケーションが必要です。 https 認証サーバーを通じて Taobao に直接アクセスできます。
1. 入口アドレスのリクエスト
1) 認証コード(code)の取得
正式環境: https://oauth.taabao.com/ authorize
サンドボックス環境: https://oauth.tbsandbox.com/authorize
2) アクセストークン(access_token)の取得
正式環境: https :/ /oauth.taovao.com/token
サンドボックス環境: https://oauth.tbsandbox.com/token
2 . 認可操作手順
正規環境でのaccess_token取得例です サンドボックス環境テストの場合、リクエストエントリアドレス等を対応するエントリアドレスに置き換える必要があります操作 プロセスは正式な環境と一致しています。
実際に認可操作を実行する場合、テストされたデータ client_id、client_secret、および redirect_uri は、実際に作成したアプリケーション データに応じて置き換える必要があります。実際のアプリケーションへの影響を避けるため、例で指定された値を直接テストすることはできません。テスト効果。下図にサーバサイドフローの認可方法のフローチャートを示し、これに基づいて順を追って説明します。
1) スプライシング認証 URL
スプライシング ユーザー認証には URL へのアクセスが必要です。例とパラメータの説明は次のとおりです:
https://oauth.taabao.com/ authorize?response_type= code&client_id=23075594&redirect_uri=http://www.oauth.net/2/&state=1212&view=web
#3) コードを取得2 ) ユーザーを誘導します。 ログイン認証
ユーザーを誘導して、ブラウザから上記の認証 URL にアクセスすると、次のログイン ページが表示されます。ユーザーはアカウント番号とパスワードを入力し、「ログイン」ボタンをクリックして認証ページに入ります。
上記のページで、ユーザーが「認可」ボタンをクリックすると、TOP は認可コードをコールバック アドレスに返し、アプリケーションはそのコードを取得して交換することができます。 access_token;
ユーザーが承認せずに「キャンセル」ボタンをクリックした場合、次の結果が返されます。ここで、error はエラー コード、error_description はエラーの説明です。以下の図に示すように:
手順 :
は、アプリケーションはオンラインです。 たとえば、ユーザーがアプリケーションを購入し、「マイ サービス - 今すぐ使用」(下の図) を通じてアクセスすると、システムは自動的に認証ページにジャンプします (したがって、この方法でアプリケーションにアクセスすると、 URL を結合する必要はありません)、コードを取得することだけに注意する必要があります。同時にコードを返すと、次のような状態を通じて提供される順序付けサービスに関連する情報も返されます。 state=versionNo:1;itemCode:xxxxx (versionNo はアプリケーションのバージョン番号、itemCode はアプリケーションです)課金コード)
Linux のcurl コマンドを使用して、次のように access_token (認可トークン) を取得します。 アプリケーションについては、ドキュメント
**例**サンプルコードはこちらを参照してください。
#####クライアント_secret = hmpidifid49149f269a149a149bf269a149 tp:// www .oauth.net/2/"https: //oauth.taabao.com/token##################
{ "w2_expires_in": 0, "taabao_user_id": "263685215", "taabao_user_nick": "商家测试帐号52", "w1_expires_in": 1800, "re_expires_in": 0, "r2_expires_in": 0, "expires_in": 86400, "token_type": "Bearer", "refresh_token" : "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215", "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215", "r1_expires_in": 1800 } |
access_token と引き換えの戻り値の例
2. クライアント側のフロー
クライアント アプリケーションの認証方法は、独立した Web サーバーを持たないが、ブラウザまたは JS スクリプトを使用して認証サーバーにアクセスできる ISV アプリケーションに適しています。
1. リクエストエントリアドレス
正式環境: https://oauth.taabao.com/authorize
サンドボックス環境: https://oauth. tbsandbox .com/authorize
2. 認可操作手順
access_tokenを取得する正規環境を例に挙げますが、サンドボックス環境の場合はサンドボックスデータをご利用ください。
同時に、認可プロセス中に、作成したアプリケーションの実際のデータに従って client_id などのパラメータを置き換える必要があります。そうしないと、認可を完了できません。
下の図は、クライアント側のフロー認証方法のフローチャートです。以下は、フローチャートに従って段階的に説明します。
1) 認証 URL の接続
https://oauth.taabao.com/authorize?response_type=token&client_id=23075594&state=1212&view=web
##2) ユーザーのインポート ログイン認証このステップはサーバー側のフロー認証方法と同じであり、次のように、ユーザーが認証のために認証 URL にアクセスするように指示されます。
#3) access_token を取得する上の図のページで [認証] をクリックすると、TOP は access_token を直接淘宝網のデフォルトに返します。ページ (サーバー側のフローは、最初にコードを返し、その後、さまざまな方法で access_token を変更します) この時点で、JS スクリプト (
if(window.location.hash!=""){alert(window.location. hash)}) を取得します。ページ # の後のフィールドをコールバックして、アクセス トークンを取得します。
戻りパラメータの例:
https://oauth.taabao.com/oauth2?view=web# access_token=6101227f5e8c230696ac93a77b3de7daacb154c6ad98106263664221&token_type=Bearer&expires_in=86400&refresh_token=6100627e3f9202c0960a6ab5bfd704939c9163589 2c70dd263664221&re_expires_in=86400&r1_expires_in=86400&r2_expires_in=86400&taabao_user_id=263664221&taovao_user_nick=販売者テスト アカウント 17&w1_expires_in=86400&w2_expires_in=86400& state=1 212&top_sign=3429C556FCD3F3FC52547DD31021592F
注:
top_sign を除き、ここで返されるパラメータはサーバー側フロー認可の戻りパラメータと同じです。ここでは詳しく説明しません。詳細については、を参照してください。サーバー側のフローの手順を参照してください。
top_sign はシステムによって生成される署名パラメータです。クライアント側フローを使用した認可には、このパラメータの整合性検証が必要です。
4) 認可署名を検証します。
つまり、戻りパラメータが top_sign と一致しているかどうかを検証します。上記のように返されたパラメータで、top_sign を除くポンド記号以降のすべてのキーと値をパラメータのアルファベット順に並べ、key1 value key2 value.... の形式で結合し、その前後に AppSecret を追加します。 (AppSecret =69a1469a1469a1469a14a9bf269a14 と仮定)、それを utf-8 エンコードに変換し、次に md5 暗号化を実行し、最後にすべてを大文字に変換します。
md5(utf-8:AppSecret k1 v1 k2 v2 ... kn vn AppSecret)。
パラメーターが次のように返された場合、# 記号の後のパラメーターを取得して連結し、最初から最後まで AppSecret を追加して次の結果を取得します。 4 221token_typeBearer
expires_in86400refresh_token6100627e3f9202c0960a6ab5bfd704939c91635892c70dd263664221re_expires_in86400r1_expires_in86400
#r2expires_in86400taabao_user_id2636 64221taabao_user_nick 販売者テスト アカウント 17w1_expires_in86400&w2_expires_in86400&state121269a1469a1469a1469a14a9bf269a14
Perform md 5 は暗号化され (API 呼び出しサンプル コードを参照)、大文字に変換されて取得されます。 : 3429C556FCD3F3FC52547DD31021592F、top_sign と一致します。
1. 入口アドレスのリクエスト
1. 正式な環境: https://oauth.taabao.com/logoff
2.サンドボックス環境: https://oauth.tbsandbox.com/logoff
2. 終了手順
ただ接続する終了 URL (https://oauth.taobao.com/logoff?client_id=12304977&view=web
リフレッシュ認可
認可を通じて取得したrefresh_tokenは、アクセストークンのr2期間をリフレッシュするために使用できます。r1 または w1 は通常、サブスクリプション期間と同じであり、通常は更新する必要がないため、w2 は再認証によって延長する必要があるため、refresh_token は通常、r2 の有効期間を延長するためにのみ使用されます。
操作方法はアクセス トークンの取得と似ていますが、リクエスト パラメーターが異なるだけで、手順は次のとおりです。関連手順
1. 認証期間の説明
認可により取得したaccess_tokenの有効期限(expires_in)は、タグの種類(ITツール、マーチャントバックエンドシステム等)やステータス(正規環境、オンライン等)に以下のように関係します。
注: 実際の API を呼び出す場合、アプリケーションの認可期間はより正確に制御されます。詳細は (2. セキュリティ レベルの説明) を参照してください。また、「第 3 のセキュリティ レベルの説明」を参照してください。 Party IT Tools」はオンラインです。後者はすべてfuwu.taabao.comで公開されています。販売者はそれを注文して使用する必要があります。対応する承認期間は注文期間と同じです。購入が1か月の場合、取得したaccess_token有効期限は1ヶ月となります。
# 2. セキュリティ レベルの説明
公開データをより柔軟に扱うために、 Taobao オープン プラットフォーム セキュリティ管理により、ユーザー データの漏洩や悪意のある変更のリスクが軽減され、セキュリティ レベルの概念が導入されます。淘宝網オープン プラットフォームは、API (または API フィールド) とアプリケーションに 4 つのセキュリティ レベル (それぞれ r1、r2、w1、w2、0、1、2、3) をマークします。 r1、r2、w1、w2 に対応して、アクセス トークン (セッション キー) の発行時に、r1_expires_in、r2_expires_in、w1_expires_in、w2_expires_in の 4 つの有効期限が追加されます。これら 4 つの値は、次のように、各レベルで API (またはフィールド) を呼び出すこのアクセス トークンの有効期間を表すために使用されます。 (セキュリティ レベル制限の対象となるアプリケーションには、サードパーティの IT ツール、サービス プロバイダーのバックエンド システム、ストア モジュール バックエンド。;販売者バックエンド システムや新しいビジネスなどの販売者所有のアプリケーションは、当面は影響を受けません。)
セキュリティ レベル | API レベル | 正式な環境テスト | オンラインおよび実行中 | 更新できますか | リフレッシュ期間 |
---|---|---|---|---|---|
レベル 3 | R1 | 24 時間 | 注文時間 | は | と同じです。 オンライン アプリケーションは注文時間と一致しており、正式環境テストは 24 時間有効です |
レベル 3 | R2 | 24 時間 | 同じサブスクリプション時間 | はい | オンライン アプリケーションはサブスクリプション時間と一致しており、公式環境テストは 24 時間有効です |
レベル 3 | W1 | 24 時間 | 同じ注文時間 | はい | お申し込みと注文が開始されました。期間は同じです。正式環境テストは 24 時間有効です。 |
レベル 3 | W2 | 24 時間 | 注文期間と同じ | Yes | オンライン アプリケーションの期間は注文と同じであり、正式な環境ですテストは 24 時間有効です |
R1 | 24 時間 | 同じサブスクリプション期間 | #オンライン アプリケーションはサブスクリプション期間と一致しており、公式環境テストは 24 時間有効です | ||
R2 | 24 時間 | #72 時間 | #Yesオンライン アプリケーションは注文時間と一致しており、正式な環境テストは 24 時間有効です | レベル 2 | |
24 時間 | 同じ注文期間 | は | オンライン アプリケーションには、サブスクリプションと同じ期間、公式環境テストは 24 時間有効です | レベル 2 | |
30 分 | 30 分 | No | レベル 1 | ||
24 時間 | 同じサブスクリプション期間です | はい | オンライン アプリケーションはサブスクリプション期間と一致しており、正式な環境テストは 24 時間有効です | レベル1 | |
24 時間 | 24 時間 | No | レベル1 | ||
24 時間 | サブスクリプション時間と同じ | Yes | オンライン アプリケーションはサブスクリプション時間と一致します。公式環境テストは 24 時間有効です | レベル 1 | |
5 分 | 5 分 | No | レベル 0 | ||
30 分 | 30 分 | No | レベル 0 | ||
0 分 | 0 分 | No | レベル 0 | ||
30 分 | 30 分 | No | レベル 0 | ||
0 分 | 0 分 | ###いいえ###### ## ##########サンプルコード1. access_tokenの取得例 サンプルコードはすべてsdkをベースに実装していますので、sdkのダウンロードと使用方法を参照してください。 #1. JAVA の例 import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.taobao.api.internal.util.WebUtils; //引用top sdk public class open_oauth { public static void main(String[] args) { String url="https://oauth.taobao.com/token"; Map<String,String> props=new HashMap<String,String>(); props.put("grant_type","authorization_code"); /*测试时,需把test参数换成自己应用对应的值*/ props.put("code","test"); props.put("client_id","test"); props.put("client_secret","test"); props.put("redirect_uri","http://www.test.com"); props.put("view","web"); String s=""; try{s=WebUtils.doPost(url, props, 30000, 30000); System.out.println(s); }catch(IOException e){ e.printStackTrace();} } }
次はこれですは SDK に基づいた Java の例です。他の言語についても、同様のトークン取得方法を参照できます。同時に、テスト時には、テスト パラメーターをアプリケーションに対応する実際の値に置き換える必要があります。
|