Introduction à la technologie de plate-forme et à l'autorisation des utilisateurs


Autorisation de connexion

Si votre application doit obtenir des données de confidentialité des utilisateurs (telles que des produits, des commandes, etc.) lors de la connexion à la plateforme ouverte Taobao, afin de garantir la sécurité et la confidentialité des données des utilisateurs, votre application doit obtenir l'autorisation de l'utilisateur, c'est-à-dire obtenir un jeton d'accès (la SessionKey d'origine) aux données de l'utilisateur. Dans ce cas, votre application doit guider l'utilisateur dans le processus « d'autorisation de connexion » à l'aide d'un compte Taobao. Ce processus utilise le protocole standard OAuth2.0 reconnu au niveau international comme protocole d'authentification et d'autorisation des utilisateurs, et prend en charge les sites Web, les clients mobiles et les clients de bureau.
Actuellement, le service Taobao OAuth2.0 prend en charge deux manières d'obtenir un jeton d'accès (jeton d'autorisation), à savoir le flux côté serveur et le flux côté client. Veuillez vous référer aux instructions suivantes pour plus de détails.

Remarque : les produits Taobao ID (compte Taobao) ne peuvent pas être utilisés via les canaux non officiels du groupe Alibaba pour fournir des services d'adhésion Taobao aux acheteurs Taobao (tels que : demandes de commandes, logistique suivi, etc.), une fois l'utilisation illégale découverte, la plateforme ouverte révoquera immédiatement les droits d'utilisation de l'identifiant Taobao de l'appkey. 注:Taobao ID(淘帐号)产品不得用于阿里巴巴集团非官方渠道为淘宝买家提供淘宝会员类服务(如:订单查询、物流追踪 等),一旦发现违规使用,开放平台将立即收回该appkey的Taobao ID使用权限

 

特别注意

此文档描述的授权页面仅适用于PC端,如果您的页面是在手机淘宝/天猫客户端中被访问,请参考这里。如果您的页面是在H5手机浏览器中被访问,请参考这里。

 

一、Server-side flow

此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。

1、请求入口地址

1)获取授权码(code)
 正式环境:https://oauth.taobao.com/authorize
 沙箱环境:https://oauth.tbsandbox.com/authorize
2)获取访问令牌(access_token)
 正式环境:https://oauth.taobao.com/token
 沙箱环境:https://oauth.tbsandbox.com/token

Remarque spécialeLa page d'autorisation décrite dans ce document s'applique uniquement au PC Si votre page est accessible dans le client mobile Taobao/Tmall, veuillez vous référer à ici. Si votre page est accessible dans le navigateur mobile H5, veuillez vous référer à ici.


1. Flux côté serveur


Ce processus nécessite que l'application ISV dispose d'une application serveur Web, qui peut enregistrer la clé et l'état de l'application elle-même et accéder directement au serveur d'autorisation de Taobao via https. TB1CBIbHpXXXXaIXpXXSutbFXXX.jpg

🎜1. Demander l'adresse d'entrée 🎜🎜🎜1) Obtenir le code d'autorisation (code) 🎜 Environnement formel : https://oauth.taobao.com/authorize 🎜 Environnement Sandbox : https://oauth.tbsandbox.com/authorize🎜2) Obtenir un jeton d'accès (access_token) 🎜 Environnement formel : https://oauth.taobao.com/token🎜 Environnement sandbox : https://oauth.tbsandbox.com/ token🎜🎜🎜2. Étapes d'autorisation🎜🎜🎜 Ici, nous prenons l'environnement formel pour obtenir access_token comme exemple. S'il s'agit d'un test d'environnement sandbox, l'entrée de la demande doit être effectuée. être L'adresse et les autres données associées sont remplacées par l'adresse d'entrée correspondante du bac à sable, et le processus opérationnel est cohérent avec l'environnement formel. 🎜 Lors de l'exécution réelle de l'opération d'autorisation, les données testées client_id, client_secret et redirect_uri doivent être remplacées en fonction des données d'application réelles créées par vous. Vous ne pouvez pas utiliser les valeurs données dans l'exemple pour des tests directs, afin de ne pas le faire. affecter l'effet réel du test. La figure ci-dessous montre l'organigramme de la méthode d'autorisation de flux côté serveur. Voici une explication étape par étape basée sur l'organigramme. 🎜🎜🎜

1) URL d'autorisation d'épissage
L'autorisation utilisateur d'épissage nécessite l'accès à l'URL. Les exemples et les descriptions des paramètres sont les suivants :
https://oauth.taobao.com/authorize?response_type=code&client_id=23075594&redirect_uri=http://. www.oauth.net/2/&state=1212&view=web

QQ截图20170213145452.png3) Obtenez le code2) Guidez l'utilisateur pour qu'il se connecte pour l'autorisation
Guidez l'utilisateur pour accéder à l'URL d'autorisation ci-dessus via le navigateur, et la page de connexion suivante apparaîtra. L'utilisateur saisit le numéro de compte et le mot de passe et clique sur le bouton « Connexion » pour accéder à la page d'autorisation.
TB1pwkRHpXXXXXLXpXXSutbFXXX.jpg

Sur la page ci-dessus, si l'utilisateur clique sur le bouton « Autoriser », TOP renverra le code d'autorisation à l'adresse de rappel, et l'application pourra obtenir et utiliser le code pour l'échanger contre access_token
Si l'utilisateur clique ; Autoriser au lieu de cliquer sur Autoriser le bouton "Annuler" renverra les résultats suivants, où error est le code d'erreur et error_description est la description de l'erreur. Comme le montre la figure ci-dessous : TB1l1AfHpXXXXXDXXXXSutbFXXX.jpg

Instructions :
Vous pouvez publier des applications sur le marché des services (fuwu.taobao.com Une fois l'application en ligne, les utilisateurs qui achètent l'application peuvent utiliser « Mon service ». -Utiliser maintenant" "Accès (image ci-dessous), le système passera automatiquement à la page d'autorisation (donc si vous accédez à l'application de cette manière, vous n'avez pas besoin de coller l'URL), faites simplement attention pour obtenir le code. Dans le même temps, lors du renvoi du code, il renverra également des informations relatives au service de commande passé par l'état, similaires à :
state=versionNo:1;itemCode:xxxxx (versionNo est le numéro de version de l'application, itemCode est le code de chargement de l'application )

4) En échange d'access_token
Utilisez la commande curl de Linux pour obtenir access_token (jeton d'autorisation), comme suit ;Pour les applications, vous pouvez vous référer à la documentation**示例**Exemple de code ici.

curl -i -d "code=OxlukWofLrB1Db1M6aJGF8x2332458&grant_type=authorization_code&client_id=23075594&
client_secret=69a1469a1469a1469a14a9bf269a14& redirection _uri=http://www.oauth.net/2/ "https://oauth.taobao.com/token


QQ截图20170213145549.png

{
  "w2_expires_in": 0,
  "taobao_user_id": "263685215",
  "taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF% 95%E5%B8%90%E5%8F%B752",
  "w1_expires_in": 1800,
  "re_expires_in": 0,
  "r2_expires_in": 0,
  "expires_in": 86400,
  "token_type": "Bearer ",
  "refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
  "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd5633 3b263685215",
  "r1_expires_in": 1800
}


Exemple de valeur de retour en échange d'un access_token

QQ截图20170213145648.png

2. Flux côté client

Méthode d'autorisation de l'application client, adaptée aux éditeurs de logiciels indépendants qui ne disposent pas de serveur Web indépendant, mais peuvent accéder au serveur d'autorisation à l'aide d'un navigateur ou d'une application de script JS.

1. Demander l'adresse d'entrée

Environnement formel : https://oauth.taobao.com/authorize
Environnement Sandbox : https://oauth.tbsandbox.com/authorize

2. Prenons l'exemple de l'environnement formel pour obtenir access_token. S'il s'agit d'un environnement sandbox, veuillez utiliser les données sandbox. Dans le même temps, lors du processus d'autorisation, des paramètres tels que client_id doivent être remplacés en fonction des données réelles de l'application que vous avez créée, sinon l'autorisation ne pourra pas être complétée.

L'image ci-dessous est l'organigramme de la méthode d'autorisation de flux côté client. Ce qui suit est une description étape par étape selon l'organigramme



TB1gIY_HpXXXXagXVXXSutbFXXX.jpg1) Épissez l'URL d'autorisation

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

QQ截图20170213145724.png

2) Guider les utilisateurs pour qu'ils se connectent pour obtenir une autorisation


Cette étape est la même que la méthode d'autorisation de flux côté serveur et les guides aux utilisateurs d'accéder à l'URL d'autorisation pour l'autorisation, comme suit.

LB1c5YZKXXXXXamXFXXXXXXXXXX.jpg3) Obtenez le access_token

Après avoir cliqué sur Autorisation sur la page ci-dessus, TOP renverra directement le access_token à la page par défaut de Taobao (différente de la méthode de flux côté serveur consistant à renvoyer d'abord le code puis à modifier le access_token), qui peut être utilisé en ce moment. Le script JS (if(window.location.hash!=""){alert(window.location.hash)}) peut récupérer le champ après la page de rappel # pour obtenir le jeton d'accès.

LB18bZlKXXXXXXdXXXXXXXXXXXX (1).jpgExemple de paramètre de retour :

https://oauth.taobao.com/oauth2?view=web#access_token=6101227f5e8c230696ac93a77b3de7daacb154c6ad98106263664221& à ken_type=Bearer&expires_in=86400&refresh_token=6100627e3f9202c0960a6ab5bfd704939c91635892c70dd263664221&re_expires_in=86400&r1_expires_in=86400&r2_expires_in=86 400&taobao_user_id=263664221&taobao_user_nick= %E5 %95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B717&w1_expires_in=86400&w2_expires_in=86400&state=1212&top_sign=3429C556FCD3F3FC52547DD3102159 2F

Remarque :
À l'exception de top_sign, les paramètres renvoyés ici sont les mêmes que les paramètres de retour d'autorisation de flux côté serveur. Ils ne seront pas décrits en détail ici. Pour plus de détails, veuillez vous référer aux instructions dans Flux côté serveur.
top_sign est un paramètre de signature généré par le système. L'autorisation utilisant la méthode de flux côté client nécessite une vérification de cohérence de ce paramètre.


4) Vérifiez la signature d'autorisation

c'est-à-dire vérifiez si les paramètres de retour sont cohérents avec top_sign. Dans les paramètres renvoyés comme ci-dessus, disposez toutes les clés et valeurs après le signe dièse, sauf top_sign, dans l'ordre alphabétique des paramètres, assemblez-les sous la forme clé1+valeur+clé2+valeur...., puis ajoutez l'AppSecret avant et après eux. (Supposons AppSecret = 69a1469a1469a1469a14a9bf269a14), puis convertissez en codage utf-8, puis effectuez le cryptage md5 et enfin convertissez le tout en majuscules.
md5(utf-8:AppSecret+k1+v1+k2+v2+...+kn+vn + AppSecret).


Pour les paramètres de retour suivants, prenez les paramètres après le signe # et concaténez-les et ajoutez AppSecret au début et à la fin pour obtenir le résultat suivant : 4c6ad981 06263664221token_typeBearer
expires_in86400refresh_token6100627e3f9202c0 960a6ab5bfd704939c91635892c70dd263664221re_expires_in86400r1_exp ires_in8640 0
r2expires_in86400taobao_user_id263664221taobao_user_nick%E5% 95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B717w1_expires_in86400&w2_expires_in86400&state121269a1469a1469a1469a14a9bf269a14
pour le cryptage md5 (reportez-vous à l'exemple de code d'appel API) et converti en majuscule, on obtient : 3429C556FCD3F3FC52547DD31021592F, ce qui est cohérent avec top_sign.

Déconnexion

Le processus de déconnexion ne prend actuellement en charge que l'accès au Web. Sa fonction est d'effacer les cookies de taobao.com, et non d'annuler l'autorisation de l'utilisateur. L'accès sur WAP ne fonctionne pas.

1. Demander l'adresse d'entrée

1. Environnement formel :

https://oauth.taobao.com/logoff

2. Environnement sandbox : https://oauth.tbsandbox.com/logoff
2. Étapes de sortie

Splice l'URL de sortie (telle que
https://oauth.taobao.com/logoff?client_id=12304977&view=web

) et visitez-la après avoir quitté, accédez à la page d'accueil de Taobao.

Autorisation d'actualisation

Le rafraîchissement_token obtenu grâce à l'autorisation peut être utilisé pour actualiser la durée r2 du jeton d'accès.

Étant donné que r1 ou w1 est généralement identique à la période d'abonnement et n'a généralement pas besoin d'être actualisé, w2 doit être prolongé par une ré-autorisation, donc rafraîchir_token n'est généralement utilisé que pour prolonger la période de validité de r2.

La méthode de fonctionnement est similaire à l'obtention du jeton d'accès, seuls les paramètres de la demande sont différents, la description est la suivante :



Instructions associéesQQ截图20170213145927.png

1.

La période de validité du access_token autorisé (expires_in) est liée au type de balise (tel que les outils informatiques, les systèmes backend du commerçant, etc.) et au statut (tel que l'environnement formel, en ligne, etc.) comme suit.
Remarque : Lorsque l'API réelle est appelée, la durée d'autorisation de l'application est contrôlée avec plus de précision. Pour plus de détails, veuillez vous référer à (2. Description du niveau de sécurité. De plus, des applications telles que « Outils informatiques tiers » sont publiées sur ; fuwu après leur développement en ligne. Sur .taobao.com, les vendeurs doivent commander pour être utilisés, et la période d'autorisation correspondante sera la même que la période de commande. Si l'achat est de 1 mois, le access_token obtenu sera valable 1. mois.

QQ截图20170213145956.png

2. Description du niveau de sécurité

Afin de contrôler avec plus de flexibilité la sécurité des données ouvertes sur la plateforme ouverte Taobao et de réduire le risque de fuite ou de modification malveillante des données des utilisateurs, la notion de niveau de sécurité est introduit.
Taobao Open Platform marque les API (ou champs API) et les applications avec quatre niveaux de sécurité : r1, r2, w1, w2 et 0,1,2,3 respectivement. Correspondant à r1, r2, w1 et w2, 4 délais d'expiration sont ajoutés lorsque le jeton d'accès (clé de session) est émis : r1_expires_in, r2_expires_in, w1_expires_in, w2_expires_in. Ces quatre valeurs sont utilisées pour représenter la période de validité de ce jeton d'accès appelant des API (ou champs) à chaque niveau, comme suit : (Les applications soumises à des restrictions de niveau de sécurité incluent : les outils informatiques tiers, les systèmes backend des fournisseurs de services et backends des modules de magasin. ;Les systèmes backend des commerçants et les nouvelles applications commerciales telles que celles utilisées par les vendeurs ne seront pas affectés pour le moment)

.
Niveau de sécuritéNiveau APITest d'environnement formelEn ligne et en cours d'exécutionPeut-il être actualiséTemps d'actualisation
Niveau 3R1 24 heuresIdem comme délai de commande OuiLa candidature en ligne est cohérente avec la période d'abonnement, et le test environnemental officiel est valable 24 heures
Niveau 3R224 heuresLa même période d'abonnementOui La candidature en ligne est cohérente avec la période d'abonnement, Le test d'environnement formel est valable 24 heures
Niveau 3W124 heuresIdentique au délai de commandeOuiLa candidature en ligne est conformément au délai de commande, le test d'environnement formel est valable 24 heures
Niveau 3 W224 heuresMême délai de commandeOuiL'application en ligne est la même que le délai de commande, le Le test d'environnement officiel est valable 24 heures
Niveau 2R124 heuresMême délai de commande Oui La candidature en ligne est cohérente avec la durée d'abonnement, le test d'environnement formel est valable 24 heures
Niveau 2R224 heures72 heuresOuiLa candidature en ligne est cohérente avec le temps d'abonnement, le test d'environnement formel Valable 24 heures
Niveau 2W1 24 heuresMême délai de commandeOuiLa candidature en ligne est cohérente avec le délai de commande, le test d'environnement officiel est valable 24 heures
Niveau 2W2 30 minutes30 minutes Non
Niveau 1R124 heuresMême durée d'abonnementOuiLa candidature en ligne est cohérente avec la durée d'abonnement, et le test d'environnement officiel est valable 24 heures
Niveau 1R224 heures24 heuresNon
Niveau 1W124 heuresMême délai de commande Oui Candidature en ligne et délai de commande Cohérent, le le test officiel d'environnement est valable 24 heures
Niveau 1W25 minutes5 minutesNon
Niveau 0R130 minutes 30 minutesNon
Niveau 0R20 minutes0 minutesNon
Niveau 0W130 minutes 30 minutesNon
Niveau 0W20 minutes0 minutesNon

Exemple de code

1. Obtenez un exemple d'access_token

Les exemples de codes sont tous basés sur le SDK, veuillez vous référer aux instructions de téléchargement et d'utilisation du SDK.

1, exemple 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, exemple 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, exemple .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. Exemple d'actualisation Refresh_token
Ce qui suit est Sur la base de l'exemple Java du SDK, d'autres langages peuvent faire référence à la méthode d'acquisition de jetons, qui est similaire. En même temps, lors des tests, vous devez remplacer le paramètre de test par la valeur réelle correspondant à votre application.

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

Convertissez réponseJson en un objet ci-dessus, ou extrayez directement le champ access_token et le nouveau jeton d'actualisation de celui-ci
refresh_token renvoie un exemple de contenu de résultat

{
"w2_expires_in": 0,
"taobao_user_id": "263685215",
"taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752",
"w1_expires_in": 1800,
​ ​ "re_expires_in": 0,
"r2_expires_in": 0,
"expires_in": 86400,
"token_type": "Porteur",
"refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
"access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215",
​ ​ "r1_expires_in": 1800
}

FAQ

1. Lors de l'autorisation d'obtenir le jeton, la clé d'application a été transmise, mais l'erreur client_id est vide est toujours signalée ?
Un autre paramètre clé de l'autorisation, client_secret, est erroné. Cette erreur sera signalée. Focus sur la vérification

2 Est-il nécessaire d'effectuer d'abord un test d'autorisation dans le bac à sable ?

Il n'y a pas une telle exigence. Cela peut être fait en « testant d'abord l'autorisation dans le bac à sable, puis dans l'environnement formel » ou cela peut également être directement « en testant l'autorisation dans l'environnement formel »

3. les documents couramment utilisés liés à l’autorisation ?

  • Gestion de plusieurs magasins : Voir
  • Outil d'autorisation rapide : Voir
  • Moyens d'améliorer le niveau de sécurité : Voir
  • Détails du niveau de sécurité : Voir

4. Référence pour plus de problèmes d'autorisation et de codes d'erreur : Voir

FAQ

  • Il n'y a pas encore de FAQ sur ce document