upUserModule 用户信息模块
模块概述
用户信息模块为H5页面提供登陆token,昵称,头像等用户相关信息。
方法列表
- getLoginStatus (获取登录状态)
- getUserInfo (获取用户信息)
- updateOauthData (更新用户鉴权信息)
- logOut (注销登录)
- refreshUser (刷新用户数据)
- updateUserInfo (更新用户信息)
- getOauthData (获取用户鉴权信息)
- socialLogin (获取第三方登录信息)
- checkAppIsInstalled (检查应用安装状态)
- getQQMusicAuthorize (获取qq音乐授权)
公共数据
- 所有数据均以JSON结构返回,由代码,信息和数据三部分组成
具体定义:返回数据通用{ "retCode": "000000", //接口状态标识码,错误标识码以11开头 "retInfo": "操作成功",//接口信息说明 "retData": null //业务数据 }
用户信息 UserInfoNew
class UserInfoNew {
userId: number;
nickname: string = '';
avatarUrl: string = '';
weight: number;
height: number;
income: number;
marriage: number;
birthday: string = '';
education: number;
email: string = '';
extraPhone: string = '';
familyNum: number;
gender: string = '';
givenName: string = '';
}
用户获取鉴权信息 OauthData
class OauthData {
// 海尔集团用户中心颁发的用户令牌
user_center_access_token: string;
// 有效时长
expires_in: string;
// 刷新token
refresh_token: string;
// uhome服务接口的accessToken
uhome_access_token: string;
// uhome服务接口的用户id
uhome_user_id: string;
}
更新鉴权信息 AuthData
class AuthData {
// 用户中心的accessToken
access_token: string;
// 有效时长
expires_in: string;
// 刷新token
refresh_token: string;
// uhome服务接口的accessToken
uhome_access_token: string;
// uhome服务接口的用户id
uhome_user_id: string;
// token类型
token_type: string;
}
模块变更记录
V4.0.0
- 删除方法:
- cancelLogin (取消登录)
- userExtraInfoChangeListener (用户扩展信息变化监听)
- 方法实现变动:
- checkAppIsInstalled native代码改为由重构后的UpUmengPlugin实现此接口
- socialLogin native代码改为由重构后的UpUmengPlugin实现此接口,其中facebook登录由UpFaceBookPlugin实现
- getQQMusicAuthorize native代码改为由重构后的UpQQMusicPlugin实现此接口
- 删除方法:
V3.0.0
模块名由userModule更改为upUserModule;原模块中签名相关方法,在3.0.0版本中调整新模块upRequestModule(优家服务接口签名请求模块)
新增方法:
- 无
删除方法:
- getSignCode (获取签名)
- getCommonSignCode (获取签名,sha256加密)
- getCommonSignCodeAndBody (获取签名,sha256加密)
- updateOauthData (更新用户鉴权信息)
方法变更:
- getLoginStatus方法返回数据改变
- getUserInfo方法返回数据改变
V3.2.0
- 用户信息模块未定义的retCode编码按照通用数据规定变为990001,操作失败retCode变为000001,非法参数错误retCode变为000002
- 增加方法 getQQMusicAuthorize(获取QQ音乐权限)
方法说明
getLoginStatus (获取登录状态)
getLoginStatus()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
按照通用
正确返回 retData说明
属性名 | 数据类型 | 说明 |
---|---|---|
isLogin | Boolean | 是否已登陆 |
isLogining | Boolean | 是否正在登陆 |
示例
调用方式
uplusapi.upUserModule.getLoginStatus().then((result) =>console.log('result',result));
成功返回结果
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":{
"isLogin":true,
"isLogining":false,
}
}
getUserInfo (获取用户信息)
getUserInfo()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.12.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
110001 | 用户未登录 |
110002 | 用户数据未刷新完成 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
userId | String | 优家云平台用户ID |
uhome_access_token | String | 访问令牌,优家云平台颁发,30位字符 |
user_center_access_token | String | 访问令牌,海尔集团用户中心颁发的用户令牌 |
offUserId | String | 海尔用户中心ID |
nickname | String | 用户昵称 |
phoneNumber | String | 用户电话 |
realName | String | 用户真实姓名 |
avatar | String | 用户头像地址 |
String | 用户邮箱 | |
username | String | 用户accountID |
示例
调用方式
uplusapi.upUserModule.getUserInfo().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "获取用户信息成功",
"retData": {
"userId": "25950360",
"uhome_access_token":"TGT3P116MHNNRFHF2H0WLT59SID9D0",
"offUserId":"66133631",
"avatar":"http://resource.haier.net:80/download/resource/uzhsh/123445566/1234345456655.jpeg",
"nickname":"mynickname",
"phoneNumber":"14753161616",
"realName":"14753161616",
"user_center_access_token":"ebfd6962-ea51-4a4a-b655-ffb4defa2870",
"email":"uhome@haier.com"
}
}
updateUserInfo (更新用户数据)
updateUserInfo()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.20.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
data | UserInfoNew | 否 | 用户数据,若某个字段为空则使用该字段上的原值更新 |
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000000 | 操作成功 |
110001 | 用户未登录 |
110002 | 用户数据未刷新完成 |
正确返回 retData说明
无
示例
调用方式
uplusapi.upUserModule.updateUserInfo(userInfo).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "",
"retData": {
}
}
updateOauthData (更新用户鉴权信息)
updateOauthData()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.20.0 及以上 |
params (data)输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
access_token | String | 是 | 用户中心的accessToken |
expires_in | String | 是 | 有效时长 |
refresh_token | String | 是 | 刷新token |
uhome_access_token | String | 是 | uhome服务接口的accessToken |
uhome_user_id | String | 是 | uhome服务接口的用户id |
token_type | String | 是 | token类型 |
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000000 | 操作成功 |
正确返回 retData说明
无
示例
调用方式
uplusapi.upUserModule.updateOauthData({
'access_token': 'access_token',
'expires_in': 'expires_in',
'refresh_token': 'refresh_token',
'uhome_access_token': 'uhome_access_token',
'uhome_user_id': 'uhome_user_id',
'token_type': 'token_type',
}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "",
"retData": {
}
}
logOut (注销登录)
logOut()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.20.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000000 | 操作成功 |
正确返回 retData说明
无
示例
调用方式
uplusapi.upUserModule.logOut().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "",
"retData": {
}
}
refreshUser (刷新用户数据)
refreshUser()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.20.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000000 | 操作成功 |
|110001|用户未登录 |
正确返回 retData说明
无
示例
调用方式
uplusapi.upUserModule.refreshUser().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "",
"retData": {
}
}
getOauthData (获取用户鉴权信息)
getOauthData()
适用性
容器 | Nebula |
---|---|
支持情况 | 是 |
APP版本 | 6.20.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000000 | 操作成功 |
110001 | 用户未登录 |
110011 | 登录中 |
正确返回 retData说明
数据类型 | 说明 |
---|---|
OauthData | 鉴权信息对象 |
示例
调用方式
uplusapi.upUserModule.getOauthData().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "",
"retData": {
"user_center_access_token": "xxx",
"expires_in": "xxx",
"refresh_token": "xxx",
"uhome_access_token": "xxx",
"uhome_user_id": "xxx",
}
}
socialLogin (获取第三方登录信息)
socialLogin()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
platform | String | 是 | 平台类型,取值范围:qq\wechat\appleId\facebook(appleId为ios独有,只限东南亚版本;facebook只限东南亚) |
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
110010 | 取消第三方登录(iOS部分系统下可能没有返回) |
000001 | 参数无效(入参)/第三方登录失败 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
accessToken | String | 第三方应用token |
openId | String | 取自第三方授权返回的uid |
realOpenId | String | 第三方应用openId(使用友盟的openid字段,https://developer.umeng.com/docs/128606/detail/193884#h2-u65B0u6D6Au5FAEu535A3)新浪微博、facebook没有此字段 |
socialAppId | String | 第三方应用appId(facebook没有此字段) |
socialAppSecret | String | 第三方应用AppSecret(facebook没有此字段) |
nickName | String | facebook登录独有的昵称字段 |
iconUrl | String | facebook登录独有的头像字段(Android返回链接为https://virtual.uplus.com/"拼上本地的文件地址) |
示例
调用方式
uplusapi.upUserModule.socialLogin({platform: 'qq'}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "执行成功",
"retData": {
"accessToken": "15CE19D7A4A4C851FA194838D57BEEDF",
"openId": "53363459385B9489ACBF94940988C702",
"socialAppId": "1104627851",
"socialAppSecret": "eeDcb1Dn6tgbThVy"
"authorizationCode": "xxxxxxxxx"
}
}
checkAppIsInstalled (检查第三方应用安装状态)
checkAppIsInstalled()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 6.12.0 及以上 |
params 输入参数:
属性名 | 数据类型 | 是否必填 | 说明 |
---|---|---|---|
platform | String | 是 | 平台类型,取值范围:qq\weibo\wechat |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
status | Boolean | 第三方应用安装状态 |
示例
调用方式
uplusapi.upUserModule.checkAppIsInstalled({platform: 'qq'}).then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "执行成功",
"retData": {
"status": true
}
}
getQQMusicAuthorize (获取qq音乐授权)
getQQMusicAuthorize()
适用性
容器 | cordova | APICloud | Nebula |
---|---|---|---|
支持情况 | 否 | 否 | 是 |
APP版本 | / | / | 7.5.0 及以上 |
params 输入参数:
无
错误返回 retCode说明:
retCode编码 | retInfo说明 |
---|---|
000001 | 操作失败(Android独有) |
1100001 | 未安装QQ音乐 |
1100002 | 拉起qq音乐,但QQ音乐处于未登录状态(Android独有) |
1100003 | 授权失败 |
1100004 | 授权取消 |
正确返回 retData说明:
属性名 | 数据类型 | 说明 |
---|---|---|
openId | String | QQ音乐openId |
token | String | QQ音乐授权token(有效期30天) |
timeStamp | String | 时间戳(Android独有) |
示例
调用方式
uplusapi.upUserModule.getQQMusicAuthorize().then((result) =>console.log('result',result));
成功返回结果
{
"retCode": "000000",
"retInfo": "调用成功",
"retData": {
"openId": " ",
"token": " ",
"timeStamp": " "
}
}
常见问题
- 在智家APP中,如果需要获取当前登录用户的用户信息,可以使用getUserInfo接口获取,这里有一种特殊情景需要特别注意:当用户在APP内登录完成直接跳转至某H5业务页面,此时H5页面初始化需要调用getUserInfo接口获取当前登录用户信息,getUserInfo有概率会返回110002异常code码,此code码标明当前APP正在获取用户信息,用户数据未完全准备就绪;遇到此情况,可以在前端间隔300ms循环调用三次此接口,就能拿到用户信息
let num = 0; function getUserInfo(){ instance.initDeviceReady().then(function() { instance.upUserModule.getUserInfo().then((res) => { // TODO console.log(res); }).catch((err) => { if (err.retCode === '110002' && num < 3) { num ++; getUserInfo(); } }); }).catch(err => console.log(err)); }