账号系统

1. 小天才账号系统是什么?

基于小天才账号授权可获取用户昵称、头像等基本信息,也可在此之上提供应用服务号、好友排行等服务。

2. 账号系统对接流程

2.1 小天才开放平台入驻申请

小天才分配appId、appSecret和第三方应用权限范围。

2.2 开发对接

  • 需集成表端账户系统sdk。

2.3 测试对接

测试环境的appId、appSecret与正式环境不同,待测试环境调试成功后,请重新申请分配正式环境appId、appSecret。 此外,访问我方的服务器接口,调试时请使用测试环境域名,调试成功提测正式版本,请换成正式环境域名。

2.4 应用上线

3. 账号系统对接指引

3.1 账号系统接口概述

  • 调用方: 第三方服务器

  • 作用: 通过授权码获取access_token和openId,基于openId获取账号信息、小天才好友排名、应用号服务等账号系统相关开放能力。

  • 测试环境域名: https://api-module.okii.com/oauth

  • 正式环境域名: https://api.watch.okii.com/oauth

3.2 账号授权服务时序图

账号授权服务时序图

关系

注:当前appId、appSecret和第三方应用权限范围由小天才服务器手动分配,需要时请向小天才方申请。

3.3 根据授权码获取accessToken

3.3.1 功能描述

第三方应用从客户端sdk拿到授权认证码code后,第三方服务器用授权认证码code获取accessToken

3.3.2 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL: https://api-module.okii.com/oauth/token
  • 消息方向:第三方应用->开放服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
appId 第三方应用唯一标识 int 授权服务用来识别第三方应用,由开放平台分配给第三方应用
appSecret 第三方应用秘钥 String 第三方应用秘钥,由开放平台分配
code 授权认证码 String 授权认证码
grantType 授权类型 String 固定值:authorization_code
  • 示例
{
    "appId": 100001,
    "appSecret": "123456",
    "grantType": "authorization_code",//固定值
    "code": "0b6bbfedc7044676a65c63e6959d81c2"//授权码
}
  • 响应消息

{
  "code":"000001",
  "desc":"SUCCESS",
  "data":{
  "accessToken":"3d9eb36db7594c569702a940e9e86b0d",
  "expiresTime":259200,
  "refreshToken":"8e49c6c296024518bf352c97a29cadf7",
  "openId":"a614044b00a8406387aeba629b0e4f75",
  "scope":"1"
  }
}

注:scope传值范围目前有下列几种,权限需要小天才开放平台进行分配

权限名称
1 用户的基础信息
4 用户好友排行
  • 返回状态
状态码 提示消息
"12001" 参数无效
"12002" 授权类型有误
"12007" APPID或APPSecret信息无效
"12004" 授权码已过期,或已被使用过

3.4 根据刷新token获取新的accessToken

3.4.1 功能描述

第三方应用通过授权认证码code获取accessToken的同时会返回一个refreshToken,有效期三个月,当accessToken过期后可通过refreshToken获取新的accessToken。

3.4.2 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL:https://api-module.okii.com/oauth/refreshToken
  • 消息方向:第三方应用->授权服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
appId 第三方应用唯一标识 int 授权服务用来识别第三方应用,由开放平台分配给第三方应用
appSecret 第三方应用秘钥 String 第三方应用秘钥,由开放平台分配
grantType 授权类型 String 固定值: refreshToken
refreshToken 刷新token String 获取新accessToken的token
  • 示例
{
    "appId": 100001,
    "appSecret": "123456",
    "grantType": "refresh_token",//固定值
    "refreshToken": "e6c189f9cc2449b59d5eff12c1616eed"//刷新token(在获取token的接口会返回
}
  • 响应消息

{
  "code":"000001",
  "desc":"SUCCESS",
  "data":{
      "accessToken":"3d9eb36db7594c569702a940e9e86b0d",
      "expiresTime":259200,
      "refreshToken":"8e49c6c296024518bf352c97a29cadf7",
      "openId":"a614044b00a8406387aeba629b0e4f75",
      "scope":"1"
  }
}

注意:在使用过refreshToken之后,该值会更新。

  • 返回状态
状态码 提示消息
"12001" 参数无效
"12002" 授权类型有误
"12007" APPID或APPSecret信息无效
"12005" 刷新token无效
"12006" 授权无效,重新走用户授权流程

4. 获取用户账号信息

4.1 概述

  • 调用方: 第三方服务器
  • 作用: 通过授权码获取用户相关信息
  • 测试环境域名: https://api-module.okii.com/resource-service
  • 正式环境域名: https://api.watch.okii.com/resource-service

4.2 根据accessToken获取用户授权信息

根据accessToken获取用户授权的信息,信息包括头像、昵称、用户的唯一标识openId(若第三方应用成功在平台上申请了其它权限,可获取更多授权信息),accessToken有效期72小时

4.2.1 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL:https://api-module.okii.com/resource-service/resource/getUserInfo
  • 消息方向:第三方应用->资源服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
accessToken 授权令牌 String 授权令牌
openId 用户openId String 用户openId
  • 示例
{
    "openId": "f94d6ff02e134624bfd2fa1ddcb0fdd9",
    "accessToken": "c204f68d78aa41f88002f0f2374732d"
}
  • 响应消息

{
     "avatarUrl":"https://watchcdn.okii.com/xxx.jpg",
     "nickName": "zhangwtest",
     "openId": "f94d6ff02e134624bfd2fa1ddcb0fdd9",
     "unionId": "cfghc6ff02e134624bfd2fa1ddcb0fdd9" //开发者和用户的唯一id
}
  • 返回状态
状态码 提示消息
"12001" 参数无效
"12008" accessToken无效或过期
"12010" 无效openId
"12009" 此范围未授权

4.3 新openId转换成旧openId兼容逻辑处理

根据accessToken获取用户授权的信息,信息包括头像、昵称、用户的唯一标识openId(若第三方应用成功在平台上申请了其它权限,可获取更多授权信息),accessToken有效期72小时

4.3.1 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL:https://api-module.okii.com/resource-service/resource/getOldOpenId
  • 消息方向:第三方应用->获取用户账号信息服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
accessToken 授权令牌 String 授权令牌
openId 用户openId String 用户openId
appId 第三方应用id int 第三方应用id
  • 示例
{
	"appId": 100005,
	"authList": [{
		"accessToken": "58223983efd14a59ba37620379be85c2",
		"openId": "2d8b34acddb248898b5b178740f2fe26"
	}, {
		"accessToken": "704737e9feac4963bab34ea8b2451008",
		"openId": "76ef8684e5014a3cb237878778f5085b"
	}]
}
  • 响应消息
{
	"code": "000001",
	"desc": "SUCCESS",
	"data": {
		"76ef8684e5014a3cb237878778f5085b"(新openId): "8461B6A1564DF055A54F3EFF053D93A3CAACD7E508AC73E7AE93550E955B457426AF57BFD6C490CBDBB74A21F88C1E1E"(旧openId),
		"2d8b34acddb248898b5b178740f2fe26": "C8A58D1C2539A96AC85AEC2481D7BBD9FF42BC5657F789B504F27FE0F21F9F8DF7D2F95B99C71064E149BC04CB69C2E3"
	}
}
  • 返回状态
状态码 提示消息
"12001" 参数无效
"12010" 无效openId
"12099" 其他错误

5. 开放排名服务

5.1 概述

  • 调用方: 第三方服务器
  • 作用: 实现排行榜功能,提高第三方应用活跃度
  • 测试环境域名: https://api-module.okii.com/resource-service
  • 正式环境域名: https://api.watch.okii.com/resource-service

5.2 开放排名服务时序图

开放排名服务时序图

5.3 上传应用排名数据

5.3.1 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL:https://api-module.okii.com/resource-service/ranking/thirdParty/uploadData
  • 消息方向:第三方应用->开放排名服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
accessToken 授权令牌 String 授权令牌
openId 用户openId String 用户openId
appId 第三方应用id int 第三方应用id
data 应用排名数据 Object 应用排名数据
  • 示例
{
    "openId": "c5284b3270134be28e957fe570c3e54a",
    "appId": 100001,
    "accessToken": "1d27d3391e094828b57db767b4161e93",
    "data": "3"
}
  • 响应消息
{
  "code":"000001",
  "desc":"SUCCESS",
  "data":1,
} 
//data等于1时上报成功,为-1时上报失败,null时未更新数据(非最高分)
  • 返回状态
状态码 提示消息
"12001" 参数无效
"12010" 无效openId
"12011" 授权超过申请范围
"12099" 其他错误
"12009" 此范围未授权

5.4 获取排行榜数据

5.4.1 接口说明

  • 请求消息
  • 协议类型:HTTPS(POST请求)
  • 数据格式:json
  • 服务URL:https://api-module.okii.com/resource-service/ranking/thirdParty/getRankingList
  • 消息方向:第三方应用->开放排名服务
  • 请求参数
参数 参数名称 类型 必填 参数说明
accessToken 授权令牌 String 授权令牌
openId 用户openId String 用户openId
appId 第三方应用id int 第三方应用id
  • 示例
{
    "openId": "c5284b3270134be28e957fe570c3e54a",
    "appId": 100001,
    "accessToken": "1d27d3391e094828b57db767b4161e93",
}
  • 响应消息
{
	"code": "000001",
	"desc": "SUCCESS",
	"data": [{
		"openId": "2d8b34acddb248898b5b178740f2fe26",
		"name": "白Z5",
		"icon": "https://qn.authtest.okii.com/user_avatar_31b3bbb72b5e4306b0afd88202449653?v=1569468861152&imageView2/0/w/100/h/100/format/jpg/q/100&e=1570073661&token=UCAgtcR1BmKTKrnXCgBJoaJB7I4fRsqCVRqRouES:EwBHt0hHq1LRtLnuWZOOt4QoEgo=",
		"appId": 100005,
		"data": "50",
		"rank": 1
	}, {
		"openId": "2a9bbdea9dc74e8883a97ef0b857c789",
		"name": "紫Z6",
		"icon": "https://qn.authtest.okii.com/user_avatar_ccb8b5007fbd4c689e6385629e7ac901?v=1569468861148&imageView2/0/w/100/h/100/format/jpg/q/100&e=1570073661&token=UCAgtcR1BmKTKrnXCgBJoaJB7I4fRsqCVRqRouES:z1lvYMveBIJFf4rmLt59j1RV6Sk=",
		"appId": 100005,
		"data": "40",
		"rank": 2
	}]
}}
  • 返回状态
状态码 提示消息
"12001" 参数无效
"12010" 无效openId
"12011" 授权超过申请范围
"12099" 其他错误
"12009" 此范围未授权
Last Updated: 2020-5-29 08:26:08