Skip to content
On this page

授权

准备工作

盯链授权登录是基于OAuth2.0 协议标准构建的 OAuth2.0 授权登录系统。 在进行 OAuth2.0 授权登录接入之前,在盯链平台注册开发者帐号,并拥有一个已审核通过的应用,并获得相应的 AppID 和 AppSecret,可开始接入流程。

授权流程说明

OAuth2.0 授权登录让用户使用 盯链APP 安全登录第三方应用或网站,在用户授权登录已接入 盯链APP OAuth2.0 的第三方应用后,第三方可以获取到用户的接口调用凭证access_token,通过access_token可以进行盯链开放平台授权关系接口调用,从而可实现获取 盯链 用户基本开放信息和帮助用户实现基础开放功能等。

盯链APP OAuth2.0 授权登录目前支持 authorization_code 模式,适用于拥有 server 端的应用授权。该模式整体流程为:

  1. 第三方应用发起钱包授权登录,根据授权请求参数跳转至 盯链APP 授权页面
  2. 盯链APP 用户允许授权第三方应用后,会重定向回到第三方网站,并且带上授权临时票据code参数
  3. 通过 code 获取 access_token
  4. 通过 access_token 进行接口调用,获取用户基本数据资源或帮助用户实现基本操作

获取 access_token 时序图:

null

第一步 获取 code

H5 网页授权

若为APP,请跳转浏览器并打开以下地址:

若为H5,请重定向至以下地址:

https://auth.h5.dinglian.biz/loading?appid=APPID&chain_id=CHAINID&scope=SCOPE&redirect_uri=REDIRECT_URI&type=oauth&state=STATE&phone_number=PHONE_NUMBER&restricted=RESTRICTED

以上地址中的参数需要平台完成拼接

参数说明

参数
必填
说明
appid应用唯一标识(在盯链开放平台提交应用审核后获取)
scope应用授权作用域,拥有多个作用域用逗号(,)分隔,详见授权 scope
redirect_uri用于接收用户允许授权后返回的code参数的地址(会通过redirect_uri?code=xxxx&state=xxxx的参数拼接后重定向返回)
type固定为 oauth
chain_id区块链 ,用与授权登录时绑定钱包地址,枚举查看:支持链
state用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验
phone_number指定用户授权手机号,暂只支持11位中国大陆手机号码
restricted0 或不传:不限制,用户每次授权可选取不同的区块链地址
1: 限制用户区块链授权地址,用户在第一次授权完成后,后续

返回说明

当用户点击“允许”授权后,授权页面会通过传入的 redirect_uri 进行重定向请求

redirect_uri?code=CODE&state=STATE

第二步 通过 code 获取 access_token

  • 请求

通过 code 获取 access_token:

https://api.dingstock.top/xserver/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE

参数说明

参数
必填
说明
appid应用唯一标识
secret应用密钥 AppSecret
code填写第一步获取的 code 参数
  • 响应

json
{
  "res": {
    "access_token": "ACCESS_TOKEN",
    "expires_in": 7200,
    "refresh_token": "REFRESH_TOKEN",
    "openid": "OPENID",
    "scope": "SCOPE"
  },
  "code": 200
}

参数说明

参数
必填
说明
access_token接口调用凭证
expires_inaccess_token 接口调用凭证超时时间,单位(秒)
refresh_token用户刷新 access_token
openid授权用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔,详见授权 scope

错误返回样例:

json
{
  "msg": "invalid scope",
  "code": 500 // 错误码
}

第三步 通过 access_token 获取用户信息

获取 access_token 后,进行接口调用,有以下前提:

  1. access_token 有效且未超时;
  2. 用户已授权给第三方应用帐号相应作用域(scope)。

此接口用于获取用户个人信息。开发者可通过 openid 来获取用户基本信息。

  • 请求 GET

https://api.dingstock.top/xserver/oauth2/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&scope=SCOPE

参数说明

参数
必填
说明
access_token获取 access_token中得到的 access_token
openid获取 access_token中得到的 openid
scope用户授权的作用域,使用逗号(,)分隔,不传则返回 access_token 中对应的全部作用域
  • 响应

    响应的数据由用户对第三方应用授权时的 scope 参数和请求参数中的 scope 决定,scope 作用域详见授权 scope

其中,contact对应用户手机号信息敏感字段,返回结果会进行 AES 加密,AES 密钥为 appsecret 在盯链开放平台中获取。

json
{
  "res": {
    // scope含baseInfo时返回
    "baseInfo": {
      "openid": "OPENID",
      "walletAddress": "0x111111111111111111",
      "chainId": "conflux",
      "nickName": "昵称",
      "authLevel": 0
    },
    // scope含contact时返回
    "contact": {
      "phoneNumber": "AES(手机号)" // 通过 appsecret 解密
    }
  },
  "code": 200
}

刷新 access_token

access_token 是调用授权关系接口的调用凭证,由于 access_token 有效期(目前为 2 个小时)较短,当 access_token 超时后,可以使用 refresh_token 进行刷新。

refresh_token 有效期

refresh_token 拥有较长的有效期(30 天),当 refresh_token 失效的后,需要用户重新授权。

  • 请求

    请求以下链接进行 refresh_token:
https://api.dingstock.top/xserver/oauth2/refresh_token?appid=APPID&refresh_token=REFRESH_TOKEN

参数说明

参数
必填
说明
appid应用唯一标识
refresh_token获取 access_token中得到的 refresh_token
  • 响应

json
{
  "access_token": "ACCESS_TOKEN",
  "expires_in": 7200,
  "refresh_token": "REFRESH_TOKEN",
  "openid": "OPENID",
  "scope": "SCOPE"
}

响应参数及错误情况同上

注意:

1、appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取 Appsecret)

2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取 access_token 后导致的用户数据泄漏、相关接口功能被恶意发起等行为;

3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新 access_token,但泄漏后相当于 access_token 泄漏,风险同上。

建议将 secret、用户数据(如 access_token)放在 App 云端服务器,由云端中转接口调用请求。

授权 Scope

baseInfo

参数类型说明
openidstring授权用户唯一标识
nickNamestring用户昵称
avatarUrlstring用户头像 url,可能为空字符串
walletAddressstring用户授权的区块链地址
chainIdstring区块链 id,可选值
authLevelint用户是否实名, 0 未实名,1 已实名

支持链

conflux

接入样式

账号授权

盯链流程如下图所示: img

钱包授权

盯链流程如下图所示: img

接入方样式建议

平台方可以使用盯链提供的 openid 进行登录
但如果平台方强要求用户必须绑定手机号码时,授权成功后建议增加一步绑定手机号的操作,如下图: img