如果您的應用程式需要通過淘寶台灣開放平台訪問淘寶台灣賣家的業務數據(如產品和訂單信息),您需要獲得賣家的授權,即,訪問賣家信息所需要的“Access Token”。您需要指導賣家完成“使用淘寶台灣賣家帳號登錄授權申請”流程。此過程使用國際OAuth2.0標準協議進行使用者身份驗證和授權。
淘寶台灣開放平台採用“Code for token”模式,具體描述如下:
服務器地址:https://auth.taobao.tw/oauth/authorize
授權步驟(如圖所示):
連接授權URL
https://auth.taobao.tw/oauth/authorize?response_type=code&force_auth=true&redirect_uri=${app call back url}
&client_id=${appkey}
請將“client_id”和“redirect_uri”替換為您的應用程式設定。
下表列出了參數及其描述:
參數 |
是否必須? |
值 |
描述 |
client_id |
是 |
由開放平台分配的您的應用程序App Key。 |
|
redirect_uri |
是 |
創建應用程式時提供的回檔URL。 |
redirect_uri”是賣方完成授權時回傳給您的接收代碼,它必須與在淘寶台灣開放平台上創建應用程式時提供的回檔URL相同。 |
response_type |
是 |
code |
值為“code”的授權類型。 |
force_auth |
否 |
true |
刷新web流覽器cookie以獲得新的授權流程。 |
state |
否 |
可自定義,如1212. |
應用程式的狀態,與輸入和回應的相同。 |
uuid |
否 |
uuid283118319 |
分配給賣方的身份,可以保護返回的授權碼。 |
引導賣家授權
引導賣家通過web流覽器打開上述授權URL,會出現如下圖所示的授權登錄頁面。左側顯示了授權之後賣家授予應用程式的權限,賣家需輸入賣家的帳號和密碼,點擊“登錄並授權”後,完成對應用程式的授權。
取得授權碼
賣家完成授權後,淘寶台灣開放平台會返回授權碼到回傳URL地址。您的應用程式會通過授權碼來獲取Access Token。網址將為您所設定的 APP回檔位址+授權碼
注意:此授權碼將在30分鐘內過期。您需要在過期前使用此代碼獲取access token。
取得 Access Token
使用/auth/token/create API來獲取Access Token。
代碼示例:
IopClient client = new IopClientImpl("https://auth.taobao.tw/rest", appkey, appSecret);
IopRequest request = new IopRequest("/auth/token/create");
request.addApiParameter("code", "0_TryzT8Vd9T1pwS7VWZ2qlMOS5");
request.addApiParameter("grantType", "authorization_code");
IopResponse response = client.execute(request);
System.out.println(response.getBody());
保存Token
Access Token將在一定時間範圍內有效。在過期之前,賣家不需要再次授權應用程式。您需要妥善保管最新的Token。
Token樣例:
注: 此示例中的“access_token”和“refresh_token”僅供參考。
{ "access_token": "50000601c30atpedfgu3LVvik87Ixlsvle3mSoB7701ceb156fPunYZ43GBg", "refresh_token": "500016000300bwa2WteaQyfwBMnPxurcA0mXGhQdTt18356663CfcDTYpWoi", "refresh_expires_in": 259200, "account_platform": "seller_center", "expires_in": 259200, "account": "xxx@gmail.com" "user_info": [ { "seller_id": "1001", "user_id": 10101 }, { "seller_id": "2001", "user_id": 20101 } ] }
下表列出了token的參數和描述:
下表列出了token的參數和描述:
Key
|
Type
|
Sample
|
描述
|
access_token
|
string
|
50000601c30atpedfgu3LVvik87Ixlsvle3mSoB7701ceb156fPunYZ43GBg
|
Access token.
|
refresh_token
|
string
|
500016000300bwa2WteaQyfwBMnPxurcA0mXGhQdTt18356663CfcDTYpWoi
|
Refresh token, 用於在“refresh_expires_in”>0時刷新。
|
expires_in
|
number
|
25920 (expires in 25920 seconds)
|
access token的過期時間以秒為單位. "測試"狀態的應用程式, 該值是7天. “在線”狀態的應用程式,該值是30天.
|
refresh_expires_in
|
number
|
25920 (expires in 25920 seconds)
|
refresh token的過期時間. “測試”狀態的應用程式,該值是 30天.“在線”狀態的應用程式,該值是180天.
|
account_id
|
string
|
706388888
|
User ID, 當“account_platform” = “seller_center”時可以忽略。
|
account
|
string
|
User account.
|
|
account_platform
|
string
|
seller_center
|
用戶平台,支持多個平台。
|
user_info
|
json
|
[
{
"seller_id": "1001",
"user_id": 10101
},
{
"seller_id": "2001",
"user_id": 20101
}
] |
重新取得授權步驟:
參看如下樣例:
IopClient client = new IopClientImpl("https://auth.taobao.tw/rest", appkey, appSecret);
IopRequest request = new IopRequest("/auth/token/refresh");
request.addApiParameter("refresh_token", "50000601c30atpedfgu3LVvik87Ixlsvle3mSoB7701ceb156fPunYZ43GBg");
IopResponse response = client.execute(request);
System.out.println(response.getBody());
通過“/auth/token/refresh”返回的數據結構與通過授權代碼獲取訪問權限返回的數據結構相同。您將獲得新的“access_token”和“refresh_token”。您必須保存最新的“refresh_token”以獲取新的“access_token”。請注意,access_token的時長會被重置,但refresh_token的時長不會被重置。refresh_token過期後,賣家需要重新授權您的應用程式來生成新的access_token和refresh_token。
使用注意事項:
在Refresh Token過期前,賣家不需要再次授權。
如果“refresh_expires_in”= 0,則無法刷新 Access Token。只有當“refresh_expires_in”> 0時,才可以呼叫/auth/token/refresh API來刷新access token。
如果需要更新 Access Token,建議在 Access Token 過期前30分鐘進行刷新。