# 用戶信息功能頁
用戶信息功能頁用于幫助插件獲取用戶信息,包括 openid 和昵稱等,相當(dāng)于 wx.login 和 wx.getUserInfo 的功能。
在基礎(chǔ)庫版本 2.3.1 前,用戶信息功能頁是插件中唯一的獲取 code 和用戶信息的方式;
自基礎(chǔ)庫版本 2.3.1 起,用戶在該功能頁中進(jìn)行過授權(quán)后,插件可以直接調(diào)用 wx.login 和 wx.getUserInfo:
- 授權(quán)是以【用戶 + 小程序 + 插件】為維度進(jìn)行授權(quán)的,即同一個用戶在不同小程序中使用同一個插件,或同一個小程序中使用不同插件,都需要單獨(dú)進(jìn)行授權(quán)
- 自基礎(chǔ)庫版本 2.6.3 起,可以使用 wx.getSetting 來查詢用戶是否授權(quán)過
另外,在滿足以下任一條件時,插件可以直接調(diào)用 wx.login:
- 使用插件的小程序與插件擁有相同的 AppId
- 使用插件的小程序與插件綁定了同一個 微信開放平臺 賬號,且使用插件的小程序與插件均與開放平臺賬號為同主體或關(guān)聯(lián)主體
不滿足以上條件時,wx.login 和 wx.getUserInfo 將返回失敗。
# 調(diào)用參數(shù)
用戶信息功能頁使用 functional-page-navigator 進(jìn)行跳轉(zhuǎn)時,對應(yīng)的參數(shù) name 應(yīng)為固定值 loginAndGetUserInfo,其余參數(shù)與 wx.getUserInfo 相同,具體來說:
args 參數(shù)說明:
| 參數(shù)名 | 類型 | 必填 | 說明 |
|---|---|---|---|
| withCredentials | Boolean | 否 | 是否帶上登錄態(tài)信息 |
| lang | String | 否 | 指定返回用戶信息的語言,zh_CN 簡體中文,zh_TW 繁體中文,en 英文。默認(rèn)為 en。 |
| timeout | Number | 否 | 超時時間,單位 ms |
注:當(dāng) withCredentials 為 true 時,返回的數(shù)據(jù)會包含 encryptedData, iv 等敏感信息。
bindsuccess 返回參數(shù)說明:
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| code | String | 同 wx.login 獲得的用戶登錄憑證(有效期五分鐘)。開發(fā)者需要在開發(fā)者服務(wù)器后臺調(diào)用 api,使用 code 換取 openid 和 session_key 等信息 |
| errMsg | String | 調(diào)用結(jié)果 |
| userInfo | OBJECT | 用戶信息對象,不包含 openid 等敏感信息 |
| rawData | String | 不包括敏感信息的原始數(shù)據(jù)字符串,用于計(jì)算簽名。 |
| signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校驗(yàn)用戶信息,參考文檔 signature。 |
| encryptedData | String | 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù),詳細(xì)見 加密數(shù)據(jù)解密算法 |
| iv | String | 加密算法的初始向量,詳細(xì)見 加密數(shù)據(jù)解密算法 |
userInfo 參數(shù)說明:
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| nickName | String | 用戶昵稱 |
| avatarUrl | String | 用戶頭像,最后一個數(shù)值代表正方形頭像大?。ㄓ?0、46、64、96、132 數(shù)值可選,0 代表 132*132 正方形頭像),用戶沒有頭像時該項(xiàng)為空。若用戶更換頭像,原有頭像 URL 將失效。 |
| gender | String | 用戶的性別,值為 1 時是男性,值為 2 時是女性,值為 0 時是未知 |
| city | String | 用戶所在城市 |
| province | String | 用戶所在省份 |
| country | String | 用戶所在國家 |
| language | String | 用戶的語言,簡體中文為 zh_CN |
# 示例代碼
<!--plugin/components/hello-component.wxml-->
<functional-page-navigator
name="loginAndGetUserInfo"
args="{{ args }}"
version="develop"
bind:success="loginSuccess"
bind:fail="loginFail"
>
<button class="login">登錄到插件</button>
</functional-page-navigator>
// plugin/components/hello-component.js
Component({
properties: {},
data: {
args: {
withCredentials: true,
lang: 'zh_CN'
}
},
methods: {
loginSuccess: function (res) {
console.log(res.detail);
},
loginFail: function (res) {
console.log(res);
}
}
});
用戶點(diǎn)擊該 navigator 后,將跳轉(zhuǎn)到如下的用戶信息功能頁:

- 由于插件需要 appid 才能工作,請?zhí)钊胍粋€ appid;
- 由于當(dāng)前代碼片段的限制,打開該示例后請 手動將 appid 填寫到
miniprogram/app.json中(如下圖)使示例正常運(yùn)行。
