特斯拉第三方应用开发指南(一)
Tesla api
一、特斯拉應用申請
1.1 創建 Tesla 賬戶
如果您還沒有 Tesla 賬戶,請創建賬戶。驗證您的電子郵件并設置多重身份驗證。
正常創建用戶就好,然后需要開啟多重身份認證,這邊常用的是mircrosoft的Authenticator.
注意點:(1)不要用自己車輛的郵箱來注冊(2)有些郵箱不是特斯拉開發者的郵箱,可能用這些有些無法正常提交訪問請求。
1.2 提交訪問請求
點擊下方的“提交請求”按鈕,請求應用程序訪問權限。登錄后,請提供您的合法企業詳細信息、應用程序名稱及描述和使用目的。在您提交了詳細信息之后,我們會審核您的請求并通過電子郵件向您發送狀態更新。
這一步很坑,多次嘗試之后都無果,原因也不知道是為啥,只能自己去看返回報文琢磨,太難受了,下面是自己踩的坑
(1)Invalid domain
無效的域名,這里我用的域名是騰訊云個人服務器的域名,證書是騰訊云免費一年的證書,印象中第一申請的時候還是能過的,第二次的時候就不行了,可能被識別到免費的ssl證書不符合規范,還是需要由合法機構的頒發證書才行。所以,為了金快速申請通過,先填個https://baidu.com吧。當然,后續需要徹底解決自己域名證書的問題,我改為使用阿里云的ssl證書,3個月到期的那種。
(2)Unable to Onboard
應用無法上架,可能原因為郵箱不對,用了之前消費者賬號(即自己的車輛賬號),建議換別的郵箱試試。
(3) Rejected
這一步嘗試了很多次,具體原因為國內還無法正常使用tesla api,只能切換至美國服務器申請下(截止2023-11-15),后續留意官網通知。
1.3 訪問應用程序憑據
一旦獲得批準,將為您的應用程序生成可在登錄后訪問的客戶端 ID 和客戶端密鑰。使用這些憑據,通過 OAuth 2.0 身份驗證獲取用戶訪問令牌。訪問令牌可用于對提供私人用戶賬戶信息或代表其他賬戶執行操作的請求進行身份驗證。
申請好就可以在自己的賬號下看到自己的應用了,
1.4 開始 API 集成
按照 API 文檔和設置說明將您的應用程序與 Tesla 車隊 API 集成。您需要生成并注冊公鑰,請求用戶授權并按照規格要求撥打電話。完成后您將能夠與 API 進行交互,并開始圍繞 Tesla 設備構建集成。
二、開發之前的準備
由于特斯拉剛推出,并且國內進展緩慢,很多都申請不下來,下面內容均以北美區域進行調用。
2.1 認識token
app與特斯拉交互的共有兩個令牌(token)方式,在調用api的時候,特別需要注意使用的是哪種token,下面是兩種token的說明:
(1)合作伙伴身份驗證令牌:這個就是你申請的app的令牌
(2)客戶生成第三方令牌:這個是消費者在你這個app下授權之后的令牌。
此外,還需要注意下,*地區對應的api地址是 https://fleet-api.prd.cn.vn.cloud.tesla.cn,不要調到別的地址去了。
2.2 獲取第三方應用token
這一步官網列的很詳細,就不在詳述了。
CLIENT_ID=<command to obtain a client_id>
CLIENT_SECRET=<secure command to obtain a client_secret>
AUDIENCE="https://fleet-api.prd.na.vn.cloud.tesla.com"
# Partner authentication token request
curl --request POST \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET" \
--data-urlencode 'scope=openid vehicle_device_data vehicle_cmds vehicle_charging_cmds' \
--data-urlencode "audience=$AUDIENCE" \
'https://auth.tesla.com/oauth2/v3/token'
2.3 驗證域名歸屬
2.1.1 Register
完成注冊合作方賬號之后才可以訪問API. 每個developer.tesla.cn上的應用程序都必須完成此步驟。官網掛了一個github的代碼,看了半天,以為要搞很多東西,實際上只需要幾步就可以了。
cd vehicle-command/cmd/tesla-keygen
go build .
./tesla-keygen -f -keyring-debug -key-file=private create > public_key.pem
這里只是生成了公鑰,需要把公鑰掛載到域名之下,我們用的是nginx,所以只要指向pem文件就可以了,注意下nginx是否可以訪問到改文件,如果不行,把nginx的user改為root。
location ~ ^/.well-known {
default_type text/html;
alias /root/vehicle-command/cmd/tesla-keygen/public_key.pem;
}
隨后,便是向tesla注冊你的域名,域名必須和你申請的時候填的一樣。
curl --header 'Content-Type: application/json' \
--header "Authorization: Bearer $TESLA_API_TOKEN" \
--data '{"domain":"string"}' \
'https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/partner_accounts'
2.1.2 public_key
最后,驗證一下是否真的注冊成功(GET /api/1/partner_accounts/public_key)
curl --header 'Content-Type: application/json' \
--header "Authorization: Bearer $TESLA_API_TOKEN" \
'https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/partner_accounts/public_key'
得到下面內容就代表成功了
{"response":{"public_key":"xxxx"}}
至此,我們的開發準備就完成了,接下來就是正常的開發與用戶交互的api。
總結
以上是生活随笔為你收集整理的特斯拉第三方应用开发指南(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禾字的意思 禾是什么意思
- 下一篇: java信息管理系统总结_java实现科