Web應用怎樣獲取Access Token?

HMSCore發表於2022-12-27

1.在聯盟建立伺服器應用

參考文件:開發準備

2.獲取使用者級Access Token

2.1 獲取code

參考文件:接入華為帳號獲取憑證

2.1.1 先按照跳轉連結進行配置url

https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?
response_type=code&
access_type=offline&
state=state_parameter_passthrough_value&
client_id=APP ID&
redirect_uri=應用的回撥地址&
scope=openid+profile

介面的描述和引數如下表所示:

示例:建立測試的App

傳入url: https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?response_type=code&access_type=offline&client_id=107408391&scope=openid+profile&redirect_uri=https://www.thirdwebdemo.com/redirect_url

2.1.2 使用者登入並授權

當請求跳轉到OAuth服務,OAuth服務會引導使用者進行授權,彈出授權頁面給使用者,顯示應用的名稱和圖示以及該應用所申請授權的scope許可權列表,輸入華為帳號及密碼完成登入授權。

2.1.3 OAuth服務將響應值透過回撥地址redirect_uri回撥給應用。

如果使用者同意授權,則回撥請求中帶有授權碼code。

https://www.thirdwebdemo.com/redirect_url?
code=<返回的授權碼code>

如果使用者不同意授權,則回撥請求中包含錯誤訊息。

https://www.thirdwebdemo.com/redirect_url #error=1107&error_description=access+denied

2.2 透過code獲取Access Token

參考文件:獲取憑證Access Token

Authorization Code只有5分鐘有效期,並且用完一次就會失效,請重新由使用者授權,生成Authorization Code。

2.2.1 介面說明

2.2.2 直接透過code獲取access_token、refresh_token

備註:透過2.1.3獲取的code需要UrlDecode後再使用

Postman請求示例:

請求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 923683a5-7379-03f5-b83f-072ba217fc65
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=DwEEABlWuXdOMrHWphJ7ixKxqkMiTfdoFX11KIcY0CP8gL2Qq5b5MNZpGtPWHKK5KBHm6u6KDP1BXq8JRunU4xIz4DV2zbdGCzEPCbuRaDz%2FzgbzWV6ty2K1TcbToSEdDszr1to17JbGiI5yM7oUx5kEf200rCvVBEGWy8a%2BBCADZ8%2BWPAAEd2O%2BUnjqoAhDSjs2s3ate0heX3DFAUrtwIOcZLCK%2FWby%2BU2oD2eaXX0CXhBNY5PE0nzBLxr4%2B5%2BYH%2BFh8%2BSssOl3repWjH0bxni8iQ%3D%3D&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8&redirect_uri=https%3A%2F%2Fwww.thirdwebdemo.com%2Fredirect_url

2.2.3 透過refresh_token獲取access_token

code的有效期只有5分鐘,refresh_token的有效期半年,access_token的有效期1個小時。不建議每次都獲取code來換取access_token,可以直接儲存refresh_token,再使用refresh_token換access_token的方式。

請求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 53d26c97-c7d8-3d49-042a-db7a4b2768a5
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8&refresh_token=DAECANR5QD9Ta3YKIn2Pwpmq8g6CyOGcsz3iNsxq8YXBpZs6EGlqb%2FM8Iyc%2FXVORdoqb%2FaZXKs9jqz72kQCmp9Om%2B7%2Fp7ff6QfH%2FKN32GwsE9xq%2BTbDT

3 獲取應用級Access Token

參考文件:客戶端模式(Client Credentials)

請求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 1e120cb0-fa6f-e622-1bf0-66a13c82b643
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~

相關文章