背景
這篇文章主要記錄,個人開發(fā)者在獲取華為用戶授權后,拿到用戶的頭像和名字。獲取用戶的電話號碼的獲取需要應用獲得 scope 權限,現(xiàn)僅對企業(yè)開發(fā)者開放。

在項目中生成證書請求文件(CSR)
? 在 build->Generate Key and CSR 中選擇

?根據(jù)下面填寫內容生成 CSR 文件


?輸入 Alias(別名)后面再項目結構配置的時候需要填寫的哈,要記住。(尷尬,寫到才發(fā)現(xiàn)單詞寫錯了。。。)

?保存 CSR 地址,點擊 Finish 完成創(chuàng)建


?在證書、APPID 和 Profile 中創(chuàng)建 APP

?新建證書,然后下載證書,后續(xù)的項目配置需要使用

?新建 Profile,并下載后續(xù)給項目配置使用

?在項目中添加公鑰指紋,選擇自己新建的公鑰

在項目結構中手動添加證書
先查看 Bundle name 和 AGC 的項目上填寫的是否一致。像我這里的,AGC 是 com.myapp.accentdemo,項目的是 com.example.accountdemo,因此,需要先調整好 Bundle name

在 AppScope 的 app.json5 文件中進行修改

在 Signing Configs 選項卡中配置項目信息

配置 Client ID,在 Entry->module.json5 中添加 Client ID,在 AGC 中復制 ID


UI


?需要引用 authentication 和 ImageType
獲取用戶信息請求對象代碼

?通過 authentication.HuaweiIDProvider ().createAuthorizationWithHuaweiIDRequest () 的方式創(chuàng)建請求對象
授權請求對象幾個重要的屬性:
?scopes:獲取用戶數(shù)據(jù),與 permissions 屬性不能同時為空,否則會報錯,默認值:[‘openid’]。其中的參數(shù)有
profile:華為賬號用戶的基本信息,如昵稱頭像等。
openid:華為賬號用戶的 OpenID、UnionID。UnionID 作為用戶標識,OpenID 為用戶在當前應用的用戶標識。
phone:華為賬號快速驗證手機號,需要 scope 權限,也就是企業(yè)用戶哈。
quickLoginAnonymousPhone:獲取華為賬號綁定的匿名手機號,需要 scope 權限,也就是企業(yè)用戶哈。
?permissions:用于獲取用戶授權臨時憑據(jù)和用戶身份認證信息,與 scopes 屬性不能同時為空。
serviceauthcode:用戶授權臨時憑據(jù)。
idtoken:用戶身份認證信息。
?forceAuthorization:表示華為賬號未登錄時,是否需要強制拉起華為賬號登錄頁。默認值:true。
?state:隨機數(shù)并做一致性校驗。該參數(shù)與響應體中返回的 state 比較。
?nonce:該參數(shù)會包含在返回的 ID Token 中,通過校驗一致性,可用于防止重放攻擊。
?idTokenSignAlgorithm:默認值:PS256,用于指定 ID Token 的簽名算法。
?supportAtomicService:在元服務場景下,當傳入 scopes 包含 profile 時,是否支持獲取用戶頭像昵稱。如果該值為 true,可以正常獲取用戶頭像昵稱。如果該值為 false,執(zhí)行授權請求將返回 1001500003 錯誤代碼。
獲取請求數(shù)據(jù)

請求返回的結果
?data:用戶授權結果數(shù)據(jù),可以查看 SDK 文檔,AuthorizationWithHuaweiIDCredential
?state:響應體中返回的 state

實現(xiàn)的效果如下
?未授權時,會有彈窗提示:

?然后就可以顯示用戶頭像和名字了


