跳到主要内容

用户账号开发指南

更新时间:2025-03-04 19:49:45

RTCX视频云平台支持使用内置账号体系,也支持集成您自己的账号体系。您可以基于用户账号体系实现自有App开发中的注册、登录、忘记密码、登出、修改用户信息等功能。同一个控制台账号创建多个自有品牌App时,App的账号体系相通。


内置账号体系

内置账号体系为RTCX平台提供的服务和能力,客户端集成平台账号及用户SDK即可使用。账号及用户SDK支持唤起登录页面,包括账号注册、登录、登出、忘记密码、多语言切换、修改头像、修改昵称、注销账号等功能,并支持在此页面基础上修改UI风格。

信息

如果您的App需发行到海外,建议您在App中实现以下内容:

  • 邮箱注册:邮箱注册更符合海外用户使用习惯。
  • 多语言切换:当前平台支持多种语言,并持续添加中。
  • 注销账号:由于海外严格的合规要求(如:GDPR),App中需要提供注销用户的功能,注销时需要删除用户的所有数据。

自有账号体系

当您拥有自己的账号体系,可以将您自己的账号体系和平台关联,实现设备绑定关系、设备分享、设备消息推送等功能。您自己账户体系中的用户信息不会保留在平台上,保障您的用户隐私信息。

自有账号体系对接基于Oauth 2.0 API协议(代理用户访问的授权开放网络标准协议,详细介绍,请参见RFC定义参考文档),请您按照以下步骤配置和开发自有账号对接功能。

  1. 进入自有品牌App的账号体系配置页面。
  2. 选择自有账号体系,并单击配置

图片

  1. 配置自有账号体系,并单击保存按钮。设置参考:App管理之账户体系

    其中访问/刷新URLGetUserInfo URL需厂商提供URL。

  2. 开发自有账号体系。

    根据以下流程图完成开发工作。

    图片

    详细流程如下:

    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_idAuthCodeclient_secret。对应返回消息中需包含参数result_codeaccess_tokenrefresh_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_typeString授权类型,固定为字符串authorization_code。
      client_idString您的平台颁发的AppKey
      client_secretString您的平台颁发的AppSecret
      codeString时序图流程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_codeString0:成功
      100000:client_id或者client_secret无效
      100003:refresh_token已经过期或失效
      110000:系统通用错误代码
      openidString用户唯一标识。
      access_tokenString授权令牌。
      refresh_tokenString获取新的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_typeString授权类型,固定为字符串refresh_code。
      client_idString您的平台颁发的AppKey
      client_secretString您的平台颁发的AppSecret
      refresh_tokenString获取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_codeString0:成功
      100000:client_id或者client_secret无效
      100003:refresh_token已经过期或失效
      110000:系统通用错误代码
      openidString用户唯一标识。
      access_tokenString授权令牌。
      refresh_tokenString获取新的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_tokenString时序图流程2中获取到的access_token
    openidString用户唯一标识(非必填,如果您需要支持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_codeString0:成功
    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:系统通用错误代码
    messageString响应结果描述。
    openidString用户唯一标识。
    nick_nameString用户的昵称。
    avatar_urlString头像URL地址。
    genderString用户的性别,取值范围如下:
    0:未知
    1:男性
    2:女性

相关文档