登錄帳號(hào)
場(chǎng)景介紹
帳號(hào)是用戶訪問華為生態(tài)應(yīng)用的憑證,擁有帳號(hào)的用戶,可以使用華為終端云服務(wù),如華為游戲中心、華為應(yīng)用市場(chǎng)、華為視頻、華為音樂等。
帳號(hào)登錄基于OAuth 2.0協(xié)議標(biāo)準(zhǔn)和OpenID Connect協(xié)議,您的應(yīng)用可以通過獲取帳號(hào)用戶身份認(rèn)證信息(ID Token)或用戶的臨時(shí)授權(quán)票據(jù)(Authorization Code),使用戶通過帳號(hào)安全登錄您的應(yīng)用。帳號(hào)支持Authorization Code和ID Token兩種登錄模式。您可根據(jù)實(shí)際情況選擇其中一種模式實(shí)現(xiàn)。
Authorization Code模式:首次登錄時(shí),要求用戶同意授權(quán),當(dāng)身份驗(yàn)證信息到期時(shí),只需要從服務(wù)器端通過刷新令牌刷新訪問令牌,從而更快,更可靠,更方便。Authorization Code模式僅適用于有自己服務(wù)器的應(yīng)用。 ID Token模式:首次登錄時(shí),要求用戶同意授權(quán),當(dāng)身份驗(yàn)證信息到期時(shí),用戶每次登錄時(shí)都應(yīng)同意授權(quán)。ID Token模式同時(shí)適用于單機(jī)應(yīng)用和有自己服務(wù)器的應(yīng)用。支持的設(shè)備
設(shè)備類型
OS版本
HMS Core(APK)版本
手機(jī)、平板、華為智慧屏、車機(jī)
EMUI 3.0及以上、Android 4.4及以上
4.0.0.300及以上
Authorization Code登錄
本章節(jié)主要介紹使用Authorization Code模式登錄帳號(hào)的開發(fā)步驟。
業(yè)務(wù)流程
整體流程:
用戶選擇帳號(hào)登錄方式登錄應(yīng)用客戶端。 應(yīng)用客戶端向帳號(hào)SDK發(fā)送請(qǐng)求,獲取Authorization Code。 帳號(hào)SDK向帳號(hào)服務(wù)器發(fā)送請(qǐng)求,獲取Authorization Code。 帳號(hào)SDK展示帳號(hào)服務(wù)器的用戶登錄授權(quán)界面,界面上會(huì)根據(jù)登錄請(qǐng)求中攜帶的授權(quán)域(scopes)信息,顯式告知用戶需要授權(quán)的內(nèi)容。 用戶允許授權(quán)。 帳號(hào)服務(wù)器返回Authorization Code信息給帳號(hào)SDK。 帳號(hào)SDK返回Authorization Code信息給應(yīng)用客戶端。 應(yīng)用客戶端將獲取到的Authorization Code信息發(fā)給應(yīng)用服務(wù)器。 應(yīng)用服務(wù)器向帳號(hào)服務(wù)器發(fā)送請(qǐng)求,獲取Access Token、Refresh Token、ID Token信息。 帳號(hào)服務(wù)器返回Access Token、Refresh Token、ID Token信息。開發(fā)步驟
Authorization Code登錄帳號(hào)功能涉及應(yīng)用的關(guān)鍵開發(fā)步驟如下:
展示登錄方式圖標(biāo)。使用華為帳號(hào)登錄時(shí),需要在登錄時(shí)展示華為帳號(hào)的圖片資源文件,具體請(qǐng)參見華為帳號(hào)登錄管理細(xì)則。圖標(biāo)資源獲取請(qǐng)參見獲取圖標(biāo)資源。
若您的應(yīng)用需要在AppGallery以外的HMS生態(tài)平臺(tái)上架時(shí),可以使用不同平臺(tái)所對(duì)應(yīng)的帳號(hào)來登錄,此時(shí)需要通過調(diào)用getChannel接口獲取對(duì)應(yīng)帳號(hào)的圖標(biāo)資源。
調(diào)用AccountAuthParamsHelper.setAuthorizationCode方法請(qǐng)求授權(quán)。 調(diào)用AccountAuthManager.getService方法初始化AccountAuthService對(duì)象。 調(diào)用AccountAuthService.getSignInIntent方法并展示帳號(hào)登錄授權(quán)頁面。 登錄授權(quán)完成后處理登錄結(jié)果。 登錄成功后應(yīng)用服務(wù)器調(diào)用獲取憑證Access Token的接口向帳號(hào)服務(wù)器請(qǐng)求獲取ID Token、Access Token、Refresh Token。請(qǐng)求參數(shù)
參數(shù)名
描述
grant_type
OAuth 2.0規(guī)范定義的字段,該值固定填“authorization_code”。
code
獲取的授權(quán)碼Authorization Code。
client_id
應(yīng)用中OAuth 2.0客戶端ID(憑據(jù))的Client ID,在創(chuàng)建應(yīng)用后由華為開發(fā)者聯(lián)盟為應(yīng)用分配的唯一標(biāo)識(shí)。Client ID的查詢方法請(qǐng)參見查看應(yīng)用。
client_secret
應(yīng)用中OAuth 2.0客戶端ID(憑據(jù))的Client Secret,在創(chuàng)建應(yīng)用后由華為開發(fā)者聯(lián)盟為應(yīng)用分配公鑰。Client Secret查詢方法請(qǐng)參見查看應(yīng)用。
redirect_uri
AppGallery Connect中設(shè)置的回調(diào)地址,用于應(yīng)用服務(wù)器在獲取用戶授權(quán)后接收Authorization Code和獲取憑證Access Token。
請(qǐng)求示例
響應(yīng)參數(shù)
參數(shù)名
描述
access_token
用戶的Access Token。
refresh_token
如果應(yīng)用申請(qǐng)帳號(hào)服務(wù)時(shí),入?yún)⒅邪琣ccess_type=offline,則會(huì)返回此參數(shù),該參數(shù)用于刷新Access Token。
expires_in
Access Token的過期時(shí)間,以秒為單位。60分鐘過期。
id_token
如果應(yīng)用申請(qǐng)帳號(hào)服務(wù)時(shí),入?yún)cope中包含OpenID,則會(huì)返回此參數(shù)(JWT格式數(shù)據(jù)),包含用戶基本帳號(hào)、用戶郵箱等信息。ID Token的描述信息請(qǐng)參見ID Token驗(yàn)證接口中ID Token描述。
scope
生成的憑證Access Token中包含的scope。
token_type
固定返回Bearer,標(biāo)識(shí)返回Access Token的類型。
由于Access Token的有效期(目前是60分鐘)較短,當(dāng)Access Token失效或者即將失效時(shí),可以使用Refresh Token(有效期180天)通過獲取憑證Access Token向帳號(hào)服務(wù)器請(qǐng)求獲取新的Access Token。說明
當(dāng)Access Token失效時(shí),若您不使用Refresh Token向帳號(hào)服務(wù)器請(qǐng)求獲取新的Access Token,帳號(hào)的授權(quán)信息將會(huì)失效,導(dǎo)致使用Access Token的功能都會(huì)失敗。 當(dāng)Access Token非正常失效(如修改密碼,退出帳號(hào),刪除設(shè)備)時(shí),業(yè)務(wù)可通過調(diào)用退出帳號(hào)接口后再調(diào)用靜默登錄接口獲取新的Access Token。請(qǐng)求示例
響應(yīng)示例
ID Token登錄
本章節(jié)主要介紹使用ID Token模式登錄帳號(hào)的開發(fā)步驟。
業(yè)務(wù)流程
整體流程:
用戶選擇帳號(hào)登錄方式登錄應(yīng)用客戶端。 應(yīng)用客戶端調(diào)用setIdToken請(qǐng)求授權(quán)。 帳號(hào)SDK向應(yīng)用客戶端返回響應(yīng)。 應(yīng)用客戶端調(diào)用AccountAuthManager.getService方法初始化AccountAuthService對(duì)象。 應(yīng)用客戶端獲取到AccountAuthService對(duì)象。 應(yīng)用客戶端調(diào)用getSignInIntent獲取登錄頁面。 帳號(hào)SDK向應(yīng)用客戶端返回登錄頁面的Intent對(duì)象。 應(yīng)用客戶端通過startActivityForResult方法跳轉(zhuǎn)到登錄頁面。 帳號(hào)SDK檢查帳號(hào)登錄情況。 帳號(hào)SDK展示帳號(hào)登錄頁面。 用戶輸入帳號(hào)信息。 帳號(hào)服務(wù)器檢查帳號(hào)授權(quán)情況。 帳號(hào)服務(wù)器向帳號(hào)SDK返回授權(quán)結(jié)果。 帳號(hào)SDK展示授權(quán)登錄頁面。 用戶確認(rèn)授權(quán)。 帳號(hào)SDK將授權(quán)登錄結(jié)果返回到應(yīng)用的onActivityResult方法中。 應(yīng)用客戶端調(diào)用parseAuthResultFromIntent獲取AuthAccount對(duì)象。 應(yīng)用客戶端獲取到ID Token后,去帳號(hào)服務(wù)器驗(yàn)證ID Token有效性。開發(fā)步驟
ID Token登錄帳號(hào)功能涉及應(yīng)用的關(guān)鍵開發(fā)步驟如下:
展示登錄方式圖標(biāo)。使用華為帳號(hào)登錄時(shí),需要在登錄時(shí)展示華為帳號(hào)的圖片資源文件,具體請(qǐng)參見華為帳號(hào)登錄管理細(xì)則。圖標(biāo)資源獲取請(qǐng)參見獲取圖標(biāo)資源。
若您的應(yīng)用需要在AppGallery以外的HMS生態(tài)平臺(tái)上架時(shí),可以使用不同平臺(tái)所對(duì)應(yīng)的帳號(hào)來登錄,此時(shí)需要通過調(diào)用getChannel接口獲取對(duì)應(yīng)帳號(hào)的圖標(biāo)資源。
調(diào)用AccountAuthParamsHelper.setIdToken方法請(qǐng)求授權(quán)。 調(diào)用AccountAuthManager.getService方法初始化AccountAuthService對(duì)象。 調(diào)用AccountAuthService.getSignInIntent方法并展示帳號(hào)登錄授權(quán)頁面。 登錄授權(quán)完成后在頁面的onActivityResult中調(diào)用AccountAuthManager.parseAuthResultFromIntent方法從登錄結(jié)果中獲取帳號(hào)信息。登錄成功后,應(yīng)用可根據(jù)authAccount.getAccountFlag的結(jié)果判斷當(dāng)前登錄帳號(hào)的渠道類型。說明
authAccount.getAccountFlag返回當(dāng)前登錄帳號(hào)的渠道類型。
0:代表華為帳號(hào),調(diào)用服務(wù)端接口請(qǐng)用此URL:https://oauth-login.cloud.huawei.com/xxx。 1:代表AppTouch帳號(hào),調(diào)用服務(wù)端接口請(qǐng)用此URL:https://oauth-login-at.cloud.huawei.com/xxx。驗(yàn)證ID Token有效性
方式一:應(yīng)用服務(wù)器驗(yàn)證(推薦)
步驟請(qǐng)參見應(yīng)用服務(wù)器的ID Token驗(yàn)證簽名。
方式二:本地驗(yàn)證
從https://oauth-login.cloud.huawei.com/.well-known/openid-configuration的響應(yīng)消息體中獲取jwks_uri的屬性值,該屬性值為公鑰URI,調(diào)用該URI,在響應(yīng)消息體中獲取keys的屬性值,并根據(jù)keys的屬性值生成公鑰。 驗(yàn)證簽名。ID Token是JWT格式的,驗(yàn)證ID Token的簽名可以采用通用的JWT庫,例如jwt.io。說明
JWT僅支持Android 9.0及以上版本使用。
驗(yàn)證ID Token中iss字段的值是否等于“https://accounts.huawei.com”。 驗(yàn)證ID Token中aud字段的值等于應(yīng)用的client_id。 驗(yàn)證ID Token中的過期時(shí)間(exp字段)是否已過期。如果以上驗(yàn)證均通過,則表示用戶ID Token驗(yàn)證通過,應(yīng)用可使用登錄結(jié)果中的用戶信息。
方式三:華為服務(wù)器驗(yàn)證
應(yīng)用調(diào)用驗(yàn)證ID Token有效性的接口向帳號(hào)服務(wù)器發(fā)送ID Token驗(yàn)證請(qǐng)求,帳號(hào)服務(wù)器向應(yīng)用直接返回驗(yàn)證結(jié)果。
說明
由于調(diào)用驗(yàn)證ID Token有效性的接口會(huì)帶來耗時(shí),并且受網(wǎng)絡(luò)狀況的影響,所以服務(wù)器驗(yàn)證方式只能用于調(diào)試目的,在商用環(huán)境需要采用應(yīng)用服務(wù)器驗(yàn)證的方式。
請(qǐng)求示例
響應(yīng)示例
相關(guān)知識(shí)
登錄帳號(hào)
管理您的華為帳號(hào)設(shè)備列表
王者榮耀怎么解封號(hào) 帳號(hào)被健康系統(tǒng)封號(hào)解封
怎么申請(qǐng)阿里郵箱注冊(cè)帳號(hào)呢
我的健康嗎已注冊(cè)有近一月了,現(xiàn)在重新登錄但忘了密碼和帳號(hào)該咋辦呢?
39健康帳號(hào)注銷協(xié)議(39健康快應(yīng)用)v2.0
怎樣注銷運(yùn)動(dòng)健康賬號(hào) 華為運(yùn)動(dòng)健康能切換帳號(hào)嗎?
北京健康寶怎么登錄
湖南自主申報(bào)登錄指引
華為運(yùn)動(dòng)健康A(chǔ)PP下載、安裝及注冊(cè)、登錄指南
網(wǎng)址: 登錄帳號(hào) http://m.u1s5d6.cn/newsview1389015.html
推薦資訊
- 1發(fā)朋友圈對(duì)老公徹底失望的心情 12775
- 2BMI體重指數(shù)計(jì)算公式是什么 11235
- 3補(bǔ)腎吃什么 補(bǔ)腎最佳食物推薦 11199
- 4性生活姿勢(shì)有哪些 盤點(diǎn)夫妻性 10428
- 5BMI正常值范圍一般是多少? 10137
- 6在線基礎(chǔ)代謝率(BMR)計(jì)算 9652
- 7一邊做飯一邊躁狂怎么辦 9138
- 8從出汗看健康 出汗透露你的健 9063
- 9早上怎么喝水最健康? 8613
- 10五大原因危害女性健康 如何保 7828