1. 程式人生 > >天貓精靈Aligenie對接記錄(一)

天貓精靈Aligenie對接記錄(一)

天貓精靈Aligenie對接記錄(一)

公司在開發一個智慧家居相關的專案時要對接天貓精靈,分享一下相關經驗,如果想深入交流或者有這方面的需求可以到

https://www.jksxit.com

在這裡插入圖片描述
第一步,建立技能,在Aligenie開發者平臺的控制檯建立技能並填寫相關資訊即可。

第二步,設定服務,則需要在自己平臺建立Oauth2.0-Server服務,採用通用的OAuth2.0開放授權協議,可以讓AliGenie在不獲取合作方使用者名稱和密碼的前提下,訪問使用者授權的資源,協議規範可以訪問OAuth2.0官方網站:https://oauth.net/2/

鑑權流程
(1)AliGenie在開發商開放平臺或者其他第三方平臺註冊一個應用,獲取到相應的Client id 和Client secret

(2)AliGenie 應用向開發商OAuth2.0服務發起一個授權請求

(3)開發商OAuth2.0服務向用戶展示一個授權頁面,使用者可進行登陸授權

(4)使用者授權AliGenie客戶端應用後,進行回跳到AliGenie 的回撥地址上並帶上code相關引數

(5)AilGenie回撥地址上根據code會去合作方Oauth 的服務上換取 access_token

(6)通過access_token,天貓精靈裝置控制時通過該access_token進行訪問合作方的服務

(A) 使用者開啟授權連結進行授權
例:
https://xxx.com/auth/authorize?redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback%3FskillId%3D11111111%26token%3DXXXXXXXXXX&client_id=XXXXXXXXX&response_type=code&state=111

引數說明:
redirect_uri: AliGenie平臺的回撥地址,該地址會加上AliGenie的引數進行urlEncode,所以合作方務必做好引數返回的相容性
client_id: 在合作方上註冊的應用Id
response_type: 響應方式為code
state:表示客戶端的當前狀態,可以指定任意值,認證伺服器會原封不動地返回這個值。

注:示例中的連結API(https://xxx.com/auth/authorize) 為開放平臺中的賬戶授權連結欄位。

(B) 通過code換取合作方訪問令牌
例:
https://XXXXX/token?grant_type=authorization_code&client_id=XXXXX&client_secret=XXXXXX&code=XXXXXXXX&redirect_uri=https%3A%2F%2Fopen.bot.tmall.com%2Foauth%2Fcallback


請求方法: POST

引數說明:
client_id: 在合廠商平臺上註冊的應用Id
grant_type: 授權型別 authorization_code
client_secret:在廠商平臺上註冊應用的secret
code: 授權登陸後回撥AliGenie的地址返回的code
redirect_uri: AliGenie回撥地址

注:示例中的連結API ( https://XXXXX/token) 為開放平臺中的Access Token Url 欄位。2018年1月4日之後,建立的技能通過body來傳參。

通過code換取access_token 響應結構如下
正常響應:
{
“access_token”: “XXXXXX”,
“refresh_token”: “XXXXXX”,
“expires_in”:17600000
}
錯誤響應:
{
“error”:“errorCode”,
“error_description”:“description”
}
注: access_token 有效期請設定成1天以上(2-3天最佳)

( C ) 通過refresh_token重新整理access_token(該功能已上線,請確保廠商自己的重新整理功能是完善的)
例:
https://XXXXX/token?grant_type=refresh_token&client_id=XXXXX&client_secret=XXXXXX&refresh_token=XXXXXX

請求方法: POST

引數說明:
grant_type:更新access_token的授權方式為refresh_token
client_id: 在廠商平臺上註冊的應用Id
client_secret:在廠商平臺上註冊應用的secret
refresh_token: 上一次授權獲取的refresh_token

注:示例中的連結API( https://XXXXX/token) 為開放平臺中的Access Token Url 欄位。
正常響應:
{
“access_token”: “XXXXXX”,
“refresh_token”: “XXXXXX”,
“expires_in”:17600000
}
錯誤響應:
{
“error”:“errorCode”,
“error_description”:“description”
}
注意事項:
1.獲取access_token或者重新整理access_token出現錯誤情況時http response status code 請返回200 ,接入方的內部異常請接入方自行包裝異常資訊

在這裡插入圖片描述