# 用户管理

## user.login({account, password, areaCode, lang})

功能：登录易微联账号

参数类型：Object

参数内容：

| 名称     | 类型   | 允许为空 | 说明                  |
| :------- | :----- | :------- | :-------------------- |
| account  | String | N        | 手机号码或者邮箱      |
| password | String | N        | 密码                  |
| areaCode | String | N        | 电话区号或国家地区码  |
| lang     | String | Y        | 推送语言， cn 或者 en |

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| user   | Object  | N        | 用户信息，见 [user.register] 方法说明                |
| at     | String  | N        | Access Token                                        |
| rt     | String  | N        | Refresh Token                                        |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |

当 error 为 10004 时，表示账号不在当前区域，客户端需要根据返回的区域信息重新去其它区调用登录接口。返回数据举例如下:

```json
{
  "status": 200,
  "responseTime": 200,
  "error": 10004,
  "msg": "redirection",
  "data": { "region": "eu" }
}
```

## user.register({account, password, areaCode, code})

功能：注册易微联账号

参数类型：Object

参数内容：

| 名称     | 类型   | 允许为空 | 说明                 |
| :------- | :----- | :------- | :------------------- |
| account  | String | N        | 手机号码或者邮箱     |
| password | String | N        | 密码                 |
| areaCode | String | N        | 电话区号或国家地区码 |
| code     | String | N        | 验证码               |

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| user   | Object  | N        | 用户信息，见 [user.register] 方法说明                |
| at     | String  | N        | Access Token                                        |
| rt     | String  | N        | Refresh Token                                        |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |

user 说明:

| 名称           | 类型    | 允许为空 | 说明                                                                                                                                                                                                                                                 |
| :------------- | :------ | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| countryCode    | String  | Y        | 电话区号区号，以"+"开头，比如"+86"                                                                                                                                                                                                                   |
| phoneNumber    | String  | Y        | 用户手机号，带电话区号格式:+8615815725225                                                                                                                                                                                                            |
| email          | String  | Y       | 用户邮箱 用户手机和邮箱不会同时为空                                                                                                                                                                                                                  |
| apikey         | String  | N        | 用户 id                                                                                                                                                                                                                                              |
| nickname       | String  | Y        | 用户昵称                                                                                                                                                                                                                                             |
| wxServiceId    | String  | Y        | 绑定的微信服务号 ID                                                                                                                                                                                                                                  |
| wxAppId        | String  | Y        | 微信服务号 appID                                                                                                                                                                                                                                     |
| wxId           | String  | Y        | 微信用户 ID                                                                                                                                                                                                                                          |
| wxOpenId       | String  | Y        | 微信用户 OpenID                                                                                                                                                                                                                                      |
| yanKanYunInfo  | Object  | Y        | 遥看云账号信息                                                                                                                                                                                                                                       |
| accountLevel   | Number  | N        | 账号等级 10=Free 20=Advanced 30=Pro                                                                                                                                                                                                                  |
| levelExpiredAt | Number  | Y        | 会员等级到期时间戳，精确到毫秒，如果字段为空或 0，表示没有过期时间                                                                                                                                                                                   |
| denyRecharge   | Boolean | Y        | 当前的账号是否已经无法充值会员，字段为空或者值为 false，代表可以充值，值为 true，代表禁止充值                                                                                                                                                        |
| accountConsult | Boolean | Y        | 是否接受过会员咨询反馈                                                                                                                                                                                                                               |
| ipCountry      | String  | Y        | 后台根据接口调用 ip 算出的用户所在国家和地区，国家地区码参见 [这里](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes)（需翻墙）的 Alpha-2 code 说明。请求 "获取用户信息" 或 “首页” 接口（带上 getUser 参数）时，服务端就会返回这个字段。 |

## user.sendCode({account, areaCode, type})

功能：发送验证码

参数类型：Object

说明：对同一个邮箱或者手机号，有发送频次限制如下:

- 1 分钟内不能超过 3 次
- 1 小时内不能超过 20 次
- 1 天内不能超过 100 次

参数内容：

| 名称     | 类型   | 允许为空 | 说明                                                     |
| :------- | :----- | :------- | :------------------------------------------------------- |
| account  | String | N        | 手机号码或者邮箱                                         |
| areaCode | String | N        | 电话区号或国家地区码                                     |
| type     | Number | N        | 验证码类型 0: 注册 1: 重置密码 3: 注销账号 4: 验证码登录 |

响应 data 参数: 空对象

## user.changePwd({oldPassword, newPassword})

功能：修改密码

参数类型：Object

参数内容：

| 名称        | 类型   | 允许为空 | 说明   |
| :---------- | :----- | :------- | :----- |
| oldPassword | String | N        | 旧密码 |
| newPassword | String | N        | 新密码 |

响应 data 参数: 空对象

## user.deleteAccount({code})

功能：注销账号

参数类型：Object

参数内容：

| 名称 | 类型   | 允许为空 | 说明   |
| :--- | :----- | :------- | :----- |
| code | String | N        | 验证码 |

响应 data 参数: 空对象

## user.getRegion({areaCode})

功能：获取区号所属区域

参数类型：Object

参数内容：

| 名称     | 类型   | 允许为空 | 说明     |
| :------- | :----- | :------- | :------- |
| areaCode | String | N        | 电话区号 |

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |

## user.getUserInfo()

功能：获取用户信息

参数类型：无

参数内容：无

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| user   | Object  | N        | 用户信息，参见[user.register]方法                    |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |

## user.updateUserInfo({nickname, acceptEmailAd, accountConsult, timezone, language, lang, emailSubscription})

功能：设置用户信息

参数类型：Object

参数内容：

| 名称                    | 类型    | 允许为空 | 说明                                                                                           |
| :---------------------- | :------ | :------- | :--------------------------------------------------------------------------------------------- |
| nickname                | String  | Y        | 用户昵称                                                                                       |
| acceptEmailAd           | Boolean | Y        | 是否接受邮件订阅广告，如果字段为空或 NULL，表示不更新                                          |
| accountConsult          | Boolean | Y        | 是否接受过会员咨询反馈，固定值 true，填写其它值则返回参数错误，如果字段为空或 NULL，表示不更新 |
| timezone                | Object  | Y        | 时区信息                                                                                       |
| timezone.id             | String  | N        | 时区 ID                                                                                        |
| timezone.offset         | Number  | N        | 时区偏移量                                                                                     |
| language                | String  | Y        | APP 语言， cn 或者 en                                                                          |
| lang                    | String  | Y        | 推送语言， cn 或者 en                                                                          |
| emailSubscription       | Object  | Y        | 邮件订阅信息，如果字段为空或 NULL，表示不更新                                                  |
| emailSubscription.email | String  | N        | 邮箱                                                                                           |

响应 data 参数:

| 名称 | 类型   | 允许为空 | 说明                              |
| :--- | :----- | :------- | :-------------------------------- |
| user | Object | N        | 用户信息，参见[user.register]方法 |

## user.logout()

功能：退出登录

参数内容：无

响应 data 参数: 空对象

## user.refreshToken({rt})

功能：刷新 Token

参数类型：Object

参数内容：

| 名称 | 类型   | 允许为空 | 说明                                  |
| :--- | :----- | :------- | :------------------------------------ |
| rt   | String | Y        | refresh Token，不填则是当前登录用户的 |

响应 data 参数:

| 名称 | 类型   | 允许为空 | 说明          |
| :--- | :----- | :------- | :------------ |
| at   | String | N        | access Token  |
| rt   | String | N        | refresh Token |

## user.resetPwd({account, newPassword, code})

功能：重置密码

参数类型：Object

参数内容：

| 名称        | 类型   | 允许为空 | 说明             |
| :---------- | :----- | :------- | :--------------- |
| account     | String | N        | 手机号码或者邮箱 |
| newPassword | String | N        | 新密码           |
| code        | String | N        | 验证码           |

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| user   | Object  | N        | 用户信息，见 [user.register] 方法说明                |
| at     | String  | N        | Access Token                                        |
| rt     | String  | N        | Refresh Token                                        |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |

## user.smsLogin({phoneNumber, code, areaCode, lang})

功能：验证码登录(仅限中国区)

参数类型：Object

参数内容：

| 名称        | 类型   | 允许为空 | 说明                  |
| :---------- | :----- | :------- | :-------------------- |
| phoneNumber | String | N        | 手机号码              |
| code        | String | N        | 验证码                |
| areaCode    | String | N        | 电话区号或国家地区码  |
| lang        | String | Y        | 推送语言， cn 或者 en |

响应 data 参数:

| 名称   | 类型    | 允许为空 | 说明                                                 |
| :----- | :------ | :------- | :--------------------------------------------------- |
| user   | Object  | N        | 用户信息，见 [user.register] 方法说明                |
| at     | String  | N        | Access Token                                        |
| rt     | String  | N        | Refresh Token                                        |
| region | String | N        | 用户所属区域 cn=中国区 as=亚洲区 us=美洲区 eu=欧洲区 |
