用户账号开发指南
RTCX视频云平台支持使用内置账号体系,也支持集成您自己的账号体系。您可以基于用户账号体系实现自有App开发中的注册、登录、忘记密码、登出、修改用户信息等功能。同一个控制台账号创建多个自有品牌App时,App的账号体系相通。
内置账号体系
内置账号体系为RTCX平台提供的服务和能力,客户端集成平台账号及用户SDK即可使用。账号及用户SDK支持唤起登录页面,包括账号注册、登录、登出、忘记密码、多语言切换、修改头像、修改昵称、注销账号等功能,并支持在此页面基础上修改UI风格。
如果您的App需发行到海外,建议您在App中实现以下内容:
- 邮箱注册:邮箱注册更符合海外用户使用习惯。
- 多语言切换:当前平台支持多种语言,并持续添加中。
- 注销账号:由于海外严格的合规要求(如:GDPR),App中需要提供注销用户的功能,注销时需要删除用户的所有数据。
自有账号体系
当您拥有自己的账号体系,可以将您自己的账号体系和平台关联,实现设备绑定关系、设备分享、设备消息推送等功能。您自己账户体系中的用户信息不会保留在平台上,保障您的用户隐私信息。
自有账号体系对接基于Oauth 2.0 API协议(代理用户访问的授权开放网络标准协议,详细介绍,请参见RFC定义参考文档),请您按照以下步骤配置和开发自有账号对接功能。
- 进入自有品牌App的账号体系配置页面。
- 选择自有账号体系,并单击配置。
-
配置自有账号体系,并单击保存按钮。设置参考:App管理之账户体系
其中访问/刷新URL和GetUserInfo URL需厂商提供URL。
-
开发自有账号体系。
根据以下流程图完成开发工作。
详细流程如下:
a. 实现App登录,并从App认证服务中获取当前登录用户的AuthCode,并将AuthCode传递给AppSDK(AppSDK的使用方法,请参见Android AppSDK的账号功能及iOS AppSDK的账号功能)。
说明 App向App认证服务(一般包含认证登录、颁发AuthCode、验证AuthCode、颁发token、验证token等)获取AuthCode,该部分需您自行实现。一般实现中建议使用安全随机数生成随机字符串,并将申请的client_id与登录账号相关联,保证时序图流程2中申请access_token时携带的AuthCode能且仅能使用一次。
b. RTCX平台通过HTTP POST方式,向您的App认证服务中发送请求来获取token。
该请求中含有参数client_id、AuthCode、client_secret。对应返回消息中需包含参数result_code、access_token、refresh_token。说明 RTCX平台账号互联的所有HTTP请求中,请求响应内容
Content-Type
需为application/json
。-
AuthCode换取access_token请求
此处为OAuth 2.0标准token换取请求,以访问/刷新URL配置为
https://test.com/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.com
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认证服务向RTCX平台成功返回的示例如下:
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":"3ZpuoxxxxMWpEE",
"refresh_token":"uHaw4Kxxxx3UmLXJB"
}返回字段 类型 描述 result_code String 0:成功
100000:client_id或者client_secret无效
100003:refresh_token已经过期或失效
110000:系统通用错误代码openid String 用户唯一标识。 access_token String 授权令牌。 refresh_token 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.com
Content-Type: application/x-www-form-urlencoded请求字段 类型 描述 grant_type String 授权类型,固定为字符串refresh_code。 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":"3ZpuoxxxxxsicMWpEE",
"refresh_token":"uHaw4Kxxxx3UmLXJB"
}返回字段 类型 描述 result_code String 0:成功
100000:client_id或者client_secret无效
100003:refresh_token已经过期或失效
110000:系统通用错误代码openid String 用户唯一标识。 access_token String 授权令牌。 refresh_token String 获取新的access_token,自动续期授权时需提供该参数。
c. 通过时序图流程2中获取到的access_token,RTCX平台向App用户服务openid获取用户信息(时序图流程3)。
App用户服务即为App自有账号体系内自己的账号体系管理服务,一般包含基本的账户注册、账户信息管理(此处须实现一个HTTP请求,通过OAuth token验证鉴权获取用户基础信息)。
URL示例 为:
https://third.com/api/users/oauth/userinfo
,请求方法为POST。请求示例如下:
POST /api/users/oauth/userinfo?access_token=testaaaatest222a779537c6687c3 HTTP/1.1
Host: third.com
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 用户的性别,取值范围如下:
0:未知
1:男性
2:女性 -