生活物联网平台中支持使用内置账号体系,也支持集成您自己的账号体系。您可以基于用户账号体系实现自有App开发中的注册、登录、忘记密码、登出、修改用户信息等功能。同一个项目创建多个自有品牌App时,App的账号体系相通。
内置账号体系
内置账号体系为平台提供的服务和能力,客户端集成平台账号及用户SDK即可使用。账号及用户SDK支持唤起登录页面,包括账号注册、登录、登出、忘记密码、多语言切换、修改头像、修改昵称、注销账号等功能,并支持在此页面基础上修改UI风格。详细操作,请参见Android账号及用户SDK、iOS账号及用户SDK。
说明 如果您的App需发行到海外,建议您在App中实现以下内容。
- 邮箱注册:邮箱注册更符合海外用户使用习惯。
- 多语言切换:当前平台支持多种语言,并持续添加中。
- 注销账号:由于海外严格的合规要求(如GDPR),App中需要提供注销用户的功能,注销时需要删除用户的所有数据。
自有账号体系
当您拥有自己的账号体系,可以将您自己的账号体系和平台关联,实现设备绑定关系、设备分享、设备消息推送等功能。您自己账户体系中的用户信息不会保留在平台上,保障您的用户隐私信息。
自有账号体系对接基于Oauth 2.0 API协议(代理用户访问的授权开放网络标准协议,详细介绍,请参见RFC定义参考文档),请您按照以下步骤配置和开发自有账号对接功能。
- 进入自有品牌App的用户账号配置页面。
- 选择自有账号体系,并单击设置。
- 配置自有账号体系,并单击确认保存。
其中访问/刷新URL和GetuserinfoURL需厂商提供URL。
- 开发自有账号体系。
根据以下流程图完成开发工作。

详细流程如下。
- 实现App登录,并从App认证服务中获取当前登录用户的AuthCode,并将AuthCode传递给SDK(SDK的使用方法,请参见账号及用户SDK(Android)与账号及用户SDK(iOS)中的“三方自有账号”内容)。
说明 App向App认证服务(一般包含认证登录、颁发AuthCode、验证AuthCode、颁发token、验证token等)获取AuthCode,该部分需您自行实现。一般实现中建议使用安全随机数生成随机字符串,并将申请的client_id与登录账号相关联,保证流程2中申请access_token时携带的AuthCode能且仅能使用一次。
- 生活物联网平台通过HTTP POST方式,向您的App认证服务中发送请求来获取token。
该请求中含有参数client_id、AuthCode、client_secret。对应返回消息中需包含参数result_code、access_token、refresh_token。
说明 生活物联网生活平台账号互联的所有HTTP请求中,请求响应内容Content-Type
需为application/json
。
- AuthCode换取access_token请求
此处为OAuth 2.0标准token换取请求,以访问/刷新URL配置为https://test.net/api/users/oauth/token
为例,示例如下。
POST /api/users/oauth/token?grant_type=authorization_code&client_id=testxxx&client_secret=testxxxxx&code=test222224tD2fVtexxxxojFZL6&redirect_uri=none HTTP/1.1
Host: test.net
Content-Type: application/x-www-form-urlencoded
请求字段 |
类型 |
描述 |
grant_type |
String |
授权类型,固定为字符串authorization_code 。
|
client_id |
String |
生活物联网平台颁发的AppKey。
|
client_secret |
String |
生活物联网平台颁发的AppSecret。
|
code |
String |
流程1中返回的AuthCode。
|
您的App认证服务向生活物联网平台成功返回的示例如下。
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"result_code":"0",
"openid":"OPENID",
"access_token":"2YotnxxxxMWpAA",
"refresh_token":"tGzvxxxx2TlKWIA"
}
返回字段 |
类型 |
描述 |
result_code |
String |
- 0:成功
- 100000:client_id或者client_secret无效
- 100002:AuthCode换取access_token失败
- 100007:无效的授权码
- 110000:系统通用错误代码
|
openid |
String |
用户唯一标识。 |
access_token |
String |
授权的令牌。 |
refresh_token |
String |
获取新的access_token,自动续期授权时需提供该参数。
|
expires_in |
String |
该access_token的有效期,单位为秒。
|
- 刷新access_token请求
POST /api/users/oauth/token?grant_type=refresh_token&client_id=testxx&client_secret=test2222&refresh_token=test222testaaaL6 HTTP/1.1
Host: test.net
Content-Type: application/x-www-form-urlencoded
请求字段 |
类型 |
描述 |
grant_type |
String |
授权类型,固定为字符串refresh_token 。
|
client_id |
String |
生活物联网平台颁发的AppKey。
|
client_secret |
String |
生活物联网平台颁发的AppSecret。
|
refresh_token |
String |
获取access_token时返回的refresh_token。
|
成功返回示例如下。
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"result_code":"0",
"openid":" OPENID",
"access_token":"2YotnFxxxxsicMWpAA",
"refresh_token":"tGzv3Jxxxx2TlKWIA"
}
返回字段 |
类型 |
描述 |
result_code |
String |
- 0:成功
- 100000:client_id或者client_secret无效
- 100003:refresh_token已经过期或失效
- 110000:系统通用错误代码
|
openid |
String |
用户唯一标识。 |
access_token |
String |
授权令牌。 |
refresh_token |
String |
获取新的access_token,自动续期授权时需提供该参数。
|
- 通过流程2中获取到的access_token,生活物联网平台向App用户服务OpenId获取用户信息。
App用户服务即为App自有账号体系内自己的账号体系管理服务,一般包含基本的账户注册、账户信息管理(此处须实现一个HTTP请求,通过OAuth token验证鉴权获取用户基础信息)。
URL示例为:https://thrid.com/sns/userinfo
,请求方法为POST。
请求示例如下。
POST /api/users/oauth/userinfo?access_token=testaaaatest222a779537c6687c3 HTTP/1.1
Host: testxx.net
Content-Type: application/x-www-form-urlencoded
请求字段 |
类型 |
描述 |
access_token |
String |
流程2中获取到的access_token。
|
openid |
String |
用户唯一标识(非必填,如果您需要支持Google Assistant和Amazon Alexa的语音对接能力,此处需要设置成非必填参数)。 |
响应示例如下。
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"result_code": "0",
"message": "成功",
"openid":" OPENID",
"nick_name": "NICKNAME",
"avatar_url": "image.com/xxxx.png",
"gender": "1"
}
返回字段 |
类型 |
描述 |
result_code |
String |
- 0:成功
- 100000:client_id或者client_secret无效
- 100001:access_token过期
- 100002:AuthCode换取access_token失败
- 100003:refresh_token已经过期或失效
- 100004:用户修改密码或者解除授权导致access_token失效
- 100005:access_token非法
- 100006:无效的OpenId
- 100007:无效的授权码
- 110000:系统通用错误代码
|
message |
String |
响应结果描述。 |
openid |
String |
用户唯一标识。 |
nick_name |
String |
用户的昵称。 |
avatar_url |
String |
头像URL地址。 |
gender |
String |
用户的性别,取值范围如下。
|
自有账号全球用户接入
生活物联网平台提供全球统一的账户接入能力,当有多个数据中心时会就近接入,从而达到最快接入响应和合规能力支持。您的自有账号系统只允许配置一个endpoint(即设置的URL的域名,在App账号接入的token地址和getUSerInfo地址中获取)。如果您的自有账号系统在全球具有多个数据中心,可以通过以下方法兼容多数据中心。
- 在区域认证服务生成authCode时,添加数据中心的标志位。
需要添加标志位的地方有:AuthCode中、AuthCode交换生成的access_token和refresh_token中。
- 使用统一的endpoint转发路由。
详细流程图如下。

以下为您推荐几种统一转发路由的实现方法,供您参考。
获取用户上传头像的URL及加密签名
开发自有App的用户账号时,如果App需要支持C端用户上传头像及修改签名的功能,请您根据以下流程来开发。
- 调用获取用户上传头像的URL及加密签名接口,获取上传的URL和签名等参数。
- App取得上传的URL和签名等参数后,通过POST方法将头像上传(更多介绍,请参见PostObject)。
上传时Header中的x-oss-forbid-overwrite参数需设置为false,否则可能导致上传失败。
- 拼接URL。
根据流程1中调用接口的返回参数中的host、dir拼接得出头像图片URL地址(拼接规则为“https://”+ host + “/” + dir
)。
- 通过修改账号属性接口更新图像URL。
注册登录App开发说明
开发自有App的用户账号时,您还需要注意App注册和登录时国家的选择,如下表所示。
操作 |
API Level 9及以上版本 |
API Level 8及以下版本 |
注册App |
需要选择国家 |
需要选择国家 |
登录App |
不需要选择国家 |
选择注册时的国家 |
账号注册时选择的国家,在账号注册成功后无法切换。该账号绑定的设备也将连接到所选国家对应区域的数据中心。如果您需切换数据中心的区域,则要先注销账号,再重新选择新的国家注册,并绑定原来的设备。
因此,您在开发App注册和登录的业务逻辑时,建议参考云智能App页面的实现。当需要选择国家时,强提示C端用户(消费者)选择国家的影响(国家决定了账号所在地和后续该账号绑定设备连接的服务器区域),避免消费者随意选择一个国家,导致设备连接的体验不佳。