文档

用户账号开发指南

更新时间:
一键部署

Link Visual(标准版)平台支持使用内置账号体系,也支持集成您自己的账号体系。您可以基于用户账号体系实现自有App开发中的注册、登录、忘记密码、登出等功能。

内置账号体系

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

三方账号体系

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

三方账号体系对接基于OAuth 2.0协议(详细介绍请参见RFC定义参考文档),请您按照以下步骤配置和对接三方账号体系。

配置三方账号体系

  1. 登录Link Visual(标准版)控制台

  2. 在左侧导航栏,选择App管理

  3. App管理页面,找到自有品牌App,单击右侧操作列的管理

  4. 单击功能配置导航页签,单击三方账号卡片的设置

    image.png

  5. 在右侧配置三方账号信息面板,配置三方账号信息。

    AppKey、AppSecret、Session有效期、访问/刷新URLGetuserinfo URL需您配置提供。

  6. 单击确定

开发三方账号体系

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

截屏2023-12-12 16.17.12.png

详细流程如下:

  1. 实现App登录,并从App认证服务中获取当前登录用户的AuthCode,并将AuthCode传递给SDK。

    SDK的使用方法,请参见账号及用户SDK(Android)账号及用户SDK(iOS)中的三方自有账号

    说明

    App向App认证服务(一般包含认证登录、颁发AuthCode、验证AuthCode、颁发Token、验证Token等)获取AuthCode,该部分需您自行实现。一般实现中建议使用安全随机数生成随机字符串,并将申请的client_id与登录账号相关联,保证流程2中申请access_token时携带的AuthCode能且仅能使用一次。

  2. 物联网智能视频服务通过HTTP POST方式,向您的App认证服务中发送请求来获取token。该请求中含有参数grant_typeclient_idclient_secret、code。对应返回消息中需包含参数result_codeaccess_tokenrefresh_token、openid、expires_in

    说明

    物联网智能视频服务账号互联的所有HTTP请求中,请求Content-Typeapplication/x-www-form-urlencoded,请求响应内容Content-Type需为application/json

    • AuthCode换取access_token请求。

      此处为OAuth 2.0标准token换取请求,以访问/刷新URL配置为https://test.net/api/users/oauth/token 为例,示例如下。

      POST /api/users/oauth/token HTTP/1.1
      Host: test.net
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 134
      
      grant_type=authorization_code&client_id=a1*****8&client_secret=xr3l1342j4k******3fwef23ad&code=WD4ddiwK******JUMfRGyt7YZN&redirect_uri=none

      请求字段

      类型

      描述

      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":"2Yo******MWpAA",
        "refresh_token":"tGz******TlKWIA"
      }

      返回字段

      类型

      描述

      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 HTTP/1.1
      Host: test.net
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 123
      
      grant_type=refresh_token&client_id=a1*****8&client_secret=xr3l1342j4k******3fwef23ad&refresh_token=testrefreshtoke1234

      请求字段

      类型

      描述

      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":"2YotnF*******MWpAA",
          "refresh_token":"tGzv3*******lKWIA"
      }

      返回字段

      类型

      描述

      result_code

      String

      • 0:成功

      • 100000:client_id或者client_secret无效

      • 100003:refresh_token已经过期或失效

      • 110000:系统通用错误代码

      openid

      String

      用户唯一标识。

      access_token

      String

      授权令牌。

      refresh_token

      String

      获取新的access_token,自动续期授权时需提供该参数。

  3. 通过流程2中获取到的access_token,物联网智能视频服务向App用户服务OpenId获取用户信息。

    App用户服务即为App三方账号体系内自己的账号体系管理服务,一般包含基本的账户注册、账户信息管理(此处须实现一个HTTP请求,通过OAuth token验证鉴权获取用户基础信息)。请求示例如下:

    POST /api/users/oauth/userinfo HTTP/1.1
    Host: test***.net
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 30
    
    access_token=testaaa********687c3

    请求字段

    类型

    描述

    access_token

    String

    流程2中获取到的access_token

    openid

    String

    用户唯一标识(非必填,如果您需要支持Google Assistant和Amazon Alexa的语音对接能力,此处需要设置成非必填参数)。

    响应示例如下:

    返回字段

    类型

    描述

    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:女性。