1.1.1. Rokid账户喜马拉雅授权对外开发文档V2.0

1.概述

本文档适用用第三方厂商,使用rokid喜马拉雅技能时,需要喜马拉雅token。作用于授权成功后,喜马拉雅token和rokid账户进行绑定

2.接入前置依赖

  • 厂商已经和rokid账户实现了互通(并且已经获得rokid分配的 clientId,clientSecret,AccessKey)
  • 厂商已经把对应设备导入到开放平台

3.准备阶段

  • 在喜马拉雅oauth平台申请appId,appSecret
  • 提供给rokid已经申请的喜马拉雅appId,appSecret。Rokid会分配对应厂商的callback
  • 根据Rokid提供的callback,完善喜马拉雅oauth平台callback地址

4.系统交互流程图

ne

5.接口信息

5.1.地址
调试环境:https://third-oauth-party-pre.rokid.com
正式环境:https://third-oauth-party.rokid.com
5.2.喜马拉雅回调地址(Rokid生成)
/third/non/{access_code}/callback.do
具体由rokid生成access_code
5.3.第三方厂商请求喜马拉雅oauth授权登录必传参数
参数说明 是否必须 含义
device_id 移动设备唯一标识,厂商在发起oauth喜马拉雅必传
state 业务字段,厂商在发起oauth喜马拉雅时候必传,喜马拉雅callback时候会透传给rokid
5.4 state参数说明
参数说明 是否必须 含义
userId 账户标识
type XMLY,授权类型,定值
typeSource APP 请求来源:如果是移动端授权写成APP
sign 签名,签名规则见下文
time 时间搓,建议为数字
deviceTypeId rokid生成的设备类型id
userType userId类型:0代表rokidToken,1代表rokid账号唯一标识,2代表第三方账号唯一标识。当为2时候,clientId字段必传
clientId rokid分配的账号授权的clientId
extraInfo 第三方额外参数,当选择是callback时候,改参数可传
5.5. 不需要rokid回调,state生成

以下参数经过base64位加密生成

{
    "userId": "",
    "type": "XMLY",
    "typeSource": "APP",
    "time": "",
    "sign": "",
    "deviceTypeId": "",
    "userType": "",
    "clientId": ""
}
5.6. 需要rokid回调,state生成

如果需要Rokid callback到厂商地址,state参数需要额外增加:extraInfo这个字段,在Rokid进行回调厂商页面时,原封不动传递回去。

{
    "userId": "",
    "type": "XMLY",
    "typeSource": "APP",
    "time": "",
    "sign": "",
    "deviceTypeId": "",
    "userType": "",
    "clientId": "",
    "extraInfo":""
}
5.7. sign生成

以下参数经过MD5 32位加密后生成(不区分大小写) clientSecret 为和rokid账户绑定时候由rokid分配

clientSecret+time+clientSecret
5.8 是否需要回调
如果厂商应用采用的是h5页面进行喜马拉雅授权登录,那么在喜马拉雅回调到Rokid后,access_token也已经完成。
需要重定向页面到厂商页面,厂商判断如何展示用户成功和失败
需要厂商提供具体的callback接口

重要!!!
厂商callback接口必须为GET形式,
接口接受参数为:result,extraInfo,tokenInfo
5.9 Rokid成功处理完成授权后,如果需要跳转,Rokid会重定向到厂商的callbackUrl,并带上result,extraInfo,tokenInfo参数
参数说明 含义
result 0:授权失败 1:授权成功 如果result为0,tokenInfo为空的json字符串 ""
extraInfo 厂商发起时传递的参数
tokenInfo 为json格式,喜马拉雅返回的token信息

厂商提供callback url例:

redirect_uri?result=1&extraInfo={extraInfo}&tokenInfo={tokenInfo}

results matching ""

    No results matching ""