プラットフォームテクノロジー - ユーザー認証の概要


ログイン認証

タオバオ オープン プラットフォームに接続する際に、アプリケーションがユーザーのプライバシー データ (製品、注文など) を取得する必要がある場合は、ユーザーのセキュリティとプライバシーを確​​保します。ユーザー データ、アプリケーションが必要とするユーザーの承認を取得します。つまり、ユーザー データにアクセスするためのアクセス トークン (元の 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 は、実際に作成したアプリケーション データに応じて置き換える必要があります。実際のアプリケーションへの影響を避けるため、例で指定された値を直接テストすることはできません。テスト効果。下図にサーバサイドフローの認可方法のフローチャートを示し、これに基づいて順を追って説明します。
TB1CBIbHpXXXXaIXpXXSutbFXXX.jpg

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

QQ截图20170213145452.png#3) コードを取得2 ) ユーザーを誘導します。 ログイン認証
ユーザーを誘導して、ブラウザから上記の認証 URL にアクセスすると、次のログイン ページが表示されます。ユーザーはアカウント番号とパスワードを入力し、「ログイン」ボタンをクリックして認証ページに入ります。
TB1pwkRHpXXXXXLXpXXSutbFXXX.jpg

上記のページで、ユーザーが「認可」ボタンをクリックすると、TOP は認可コードをコールバック アドレスに返し、アプリケーションはそのコードを取得して交換することができます。 access_token;
ユーザーが承認せずに「キャンセル」ボタンをクリックした場合、次の結果が返されます。ここで、error はエラー コード、error_description はエラーの説明です。以下の図に示すように: TB1l1AfHpXXXXXDXXXXSutbFXXX.jpg

手順 :
は、アプリケーションはオンラインです。 たとえば、ユーザーがアプリケーションを購入し、「マイ サービス - 今すぐ使用」(下の図) を通じてアクセスすると、システムは自動的に認証ページにジャンプします (したがって、この方法でアプリケーションにアクセスすると、 URL を結合する必要はありません)、コードを取得することだけに注意する必要があります。同時にコードを返すと、次のような状態を通じて提供される順序付けサービスに関連する情報も返されます。 state=versionNo:1;itemCode:xxxxx (versionNo はアプリケーションのバージョン番号、itemCode はアプリケーションです)課金コード)

4) access_token の交換

Linux のcurl コマンドを使用して、次のように access_token (認可トークン) を取得します。 アプリケーションについては、ドキュメント
**例**サンプルコードはこちらを参照してください。

## Curl -i -d "code = oxlukwoflrb1db1m6ajgf8x2332458&grant_type = authorization_code&client_id = 230755594&



QQ截图20170213145549.png

#####クライアント_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 と引き換えの戻り値の例

QQ截图20170213145648.png

2. クライアント側のフロー

クライアント アプリケーションの認証方法は、独立した Web サーバーを持たないが、ブラウザまたは JS スクリプトを使用して認証サーバーにアクセスできる ISV アプリケーションに適しています。

1. リクエストエントリアドレス

正式環境: https://oauth.taabao.com/authorize
サンドボックス環境: https://oauth. tbsandbox .com/authorize

2. 認可操作手順

access_tokenを取得する正規環境を例に挙げますが、サンドボックス環境の場合はサンドボックスデータをご利用ください。
同時に、認可プロセス中に、作成したアプリケーションの実際のデータに従って client_id などのパラメータを置き換える必要があります。そうしないと、認可を完了できません。
下の図は、クライアント側のフロー認証方法のフローチャートです。以下は、フローチャートに従って段階的に説明します。TB1gIY_HpXXXXagXVXXSutbFXXX.jpg

1) 認証 URL の接続

https://oauth.taabao.com/authorize?response_type=token&client_id=23075594&state=1212&view=web

QQ截图20170213145724.png


##2) ユーザーのインポート ログイン認証このステップはサーバー側のフロー認証方法と同じであり、次のように、ユーザーが認証のために認証 URL にアクセスするように指示されます。

LB1c5YZKXXXXXamXFXXXXXXXXXX.jpg

#3) access_token を取得する上の図のページで [認証] をクリックすると、TOP は access_token を直接淘宝網のデフォルトに返します。ページ (サーバー側のフローは、最初にコードを返し、その後、さまざまな方法で access_token を変更します) この時点で、JS スクリプト (
if(window.location.hash!=""){alert(window.location. hash)}) を取得します。ページ # の後のフィールドをコールバックして、アクセス トークンを取得します。

LB18bZlKXXXXXXdXXXXXXXXXXXX (1).jpg

戻りパラメータの例:

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 と一致します。

ログアウト

ログアウト プロセスは現在、Web アクセスのみをサポートしています。その機能は、ユーザーの承認をキャンセルするものではなく、taabao.com の Cookie をクリアすることです。 WAP でのアクセスが機能しません。

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 の有効期間を延長するためにのみ使用されます。

操作方法はアクセス トークンの取得と似ていますが、リクエスト パラメーターが異なるだけで、手順は次のとおりです。



関連手順QQ截图20170213145927.png

1. 認証期間の説明

認可により取得したaccess_tokenの有効期限(expires_in)は、タグの種類(ITツール、マーチャントバックエンドシステム等)やステータス(正規環境、オンライン等)に以下のように関係します。
注: 実際の API を呼び出す場合、アプリケーションの認可期間はより正確に制御されます。詳細は (2. セキュリティ レベルの説明) を参照してください。また、「第 3 のセキュリティ レベルの説明」を参照してください。 Party IT Tools」はオンラインです。後者はすべてfuwu.taabao.comで公開されています。販売者はそれを注文して使用する必要があります。対応する承認期間は注文期間と同じです。購入が1か月の場合、取得したaccess_token有効期限は1ヶ月となります。

QQ截图20170213145956.png

# 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 ツール、サービス プロバイダーのバックエンド システム、ストア モジュール バックエンド。;販売者バックエンド システムや新しいビジネスなどの販売者所有のアプリケーションは、当面は影響を受けません。)

##レベル 2R124 時間同じサブスクリプション期間#オンライン アプリケーションはサブスクリプション期間と一致しており、公式環境テストは 24 時間有効ですレベル 2R224 時間 #Yesオンライン アプリケーションは注文時間と一致しており、正式な環境テストは 24 時間有効ですレベル 2W124 時間同じ注文期間はオンライン アプリケーションには、サブスクリプションと同じ期間、公式環境テストは 24 時間有効です レベル 2W230 分30 分Noレベル 1R124 時間同じサブスクリプション期間ですはいオンライン アプリケーションはサブスクリプション期間と一致しており、正式な環境テストは 24 時間有効ですレベル1R224 時間24 時間Noレベル1W124 時間サブスクリプション時間と同じYesオンライン アプリケーションはサブスクリプション時間と一致します。公式環境テストは 24 時間有効ですレベル 1W25 分5 分Noレベル 0R130 分30 分Noレベル 0R20 分0 分Noレベル 0W130 分30 分Noレベル 0W20 分0 分
セキュリティ レベルAPI レベル正式な環境テストオンラインおよび実行中更新できますかリフレッシュ期間
レベル 3R124 時間注文時間 と同じです。 オンライン アプリケーションは注文時間と一致しており、正式環境テストは 24 時間有効です
レベル 3R2 24 時間同じサブスクリプション時間はいオンライン アプリケーションはサブスクリプション時間と一致しており、公式環境テストは 24 時間有効です
レベル 3W124 時間同じ注文時間 はいお申し込みと注文が開始されました。期間は同じです。正式環境テストは 24 時間有効です。
レベル 3W224 時間注文期間と同じ Yesオンライン アプリケーションの期間は注文と同じであり、正式な環境ですテストは 24 時間有効です
#72 時間
###いいえ###### ## ##########

サンプルコード

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();}
    } }


##2. PHP の例

<?php
/*测试时,需把test参数换成自己应用对应的值*/

 $url = 'https://oauth.taobao.com/token';
 $postfields= array('grant_type'=>'authorization_code',
 'client_id'=>'test',
 'client_secret'=>'test',
 'code'=>'test',
 'redirect_uri'=>'http://www.test.com');
 $post_data = '';
 
 foreach($postfields as $key=>$value){
 $post_data .="$key=".urlencode($value)."&";}
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
 
 //指定post数据
 curl_setopt($ch, CURLOPT_POST, true);

 //添加变量
 curl_setopt($ch, CURLOPT_POSTFIELDS, substr($post_data,0,-1));
 $output = curl_exec($ch);
 $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 echo $httpStatusCode;
 curl_close($ch);
 var_dump($output);
 
?>


3. .NET の例

namespace Oauth2._0
{
    class Program 
    { 
    static void Main(string[] args)
        {
            WebUtils webUtils = new WebUtils(); 
            IDictionary<string, string> pout = new Dictionary<string, string>(); 
            pout.Add("grant_type", "authorization_code"); 
            pout.Add("client_id", "test"); 
            pout.Add("client_secret", "test"); 
            pout.Add("code", "test");
            pout.Add("redirect_uri", "http://www.test.com"); 
            string output = webUtils.DoPost("https://oauth.taobao.com/token", pout); 
            Console.Write(output); 
            Console.ReadLine();       
        }
    } 
}


##2.fresh_token 更新の例

次はこれですは SDK に基づいた Java の例です。他の言語についても、同様のトークン取得方法を参照できます。同時に、テスト時には、テスト パラメーターをアプリケーションに対応する実際の値に置き換える必要があります。

  import java.io.IOException;
  import java.util.HashMap;
  import java.util.Map;
  import com.taobao.api.internal.util.WebUtils;
 
  public class test_refresh {
     
  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","refresh_token");
    props.put("refresh_token","test");
    props.put("client_id","test");
    props.put("client_secret","test");
    String s="";
    try{s=WebUtils.doPost(url, props, 30000, 30000);
    System.out.println(s);
    }catch(IOException e){
        e.printStackTrace();
    }
    }
上記は、responseJson をオブジェクトに変換するか、そこから access_token フィールドと新しいリフレッシュ トークンを直接抽出します
#refresh_token が返す結果の内容の例



#{
"w2_expires_in": 0,
"taobao_user_id": "263685215",
"taabao_user_nick": "販売者テスト アカウント 52",
"w1_expires_in": 1800,
"re_expires_in": 0,
"r2_expires_in": 0,
"有効期限": 86400,
"トークンタイプ": "ベアラー",
"リフレッシュトークン": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
"アクセストークン": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215",
"r1_expires_in": 1800
}

FAQ

1. トークンの取得を承認するときに、appkey が渡されましたが、client_id が空であるというエラーが依然として報告されますか?
承認の別のキー パラメータ client_secret が間違っています。このエラーが報告されます。チェックに重点を置いてください。

2. 最初にサンドボックスで承認テストを実行する必要がありますか?

そのような要件はなく、「サンドボックスでテスト認可してから正式環境で認可する」という方法でも、直接「正式環境でテスト認可」する方法でも構いません。

#3. 一般的に使用される承認関連の文書とは何ですか?

    複数店舗管理: 見る
  • クイック認証ツール: 見る
  • セキュリティレベルを向上させる方法: 見る
  • セキュリティレベルの詳細説明: View
4. 認証の問題とエラー コードの詳細については、参照: View

#FAQ

に関する FAQ
  • # はありません。このドキュメントはまだです。##