@yeefox/auth-sdk
v1.7.1
Published
Authorization Sdk for yeefox
Downloads
39
Readme
@yeefox/auth-sdk
以狐钱包授权SDK (1.6.0)
安装
通过npm 安装
npm install @yeefox/auth-sdk
如何引入
打包后的版本在 lib 文件夹
import {YEEFOX_AUTH, YeefoxAuthSdk} from "@yeefox/auth-sdk/lib";如果您使用打包工具, 可也以这样
import {YEEFOX_AUTH, YeefoxAuthSdk} from "@yeefox/auth-sdk";或者在浏览器直接引入
<script type="text/javascript" src="node_modules/@yeefox/auth-sdk/lib/index.umd.js"></script>
<script type="text/javascript">
const appId="xxx";
const yeefoxAuth = window.YEEFOX.YeefoxAuthSdk.instance(appId);
</script>使用申请授权接口前, 初始化必须传入 appId, 使用DApp授权接口则不需要
调用方法
初始化SDK, 使用单例模式, 用instance方法获得实例
const appId="xxx"; const yeefoxAuth = YeefoxAuthSdk.instance(appId);
申请授权接口 (需要appId)
调用方式
直接调用实例的对应方法, 第一个参数为业务参数, 必填, 各个接口第一个参数见下面接口列表. 第二个参数为验签相关, 如果不希望用户收到未签名的警告, 请传入第二个参数. 第二个参数的内容为
| 参数字段 | 名称 | 类型 | | --------- | ------ | ------ | | sign | 签名 | 字符串 | | timestamp | 时间戳 | 数字 |
其中sign的生成方式和Gate平台请求一致. 第一个参数的内容作为业务参数, 让后端对
{
appId: <APP ID>
bizContent: <业务参数>
timeStamp: <时间戳>
}进行签名, 将得到sign和timestamp返回至前端并传递给第二个参数
如果没有传递第二个签名参数, 该请求可能会被用户或者以狐直接拒绝掉.
返回值为异步返回(Promise), 内容是授权序列号, 将序列号交于后端以实际执行授权.
接口及参数列表
申请授权用户信息接口(grantUserInfo)
| 字段名 | 类型 | 必选 | 说明 | | ---------- | ---------- | -------------------------- | ------------------------------------------------------------ | | fields | 字符串数组 | 是 | 需要获取用户信息列表选项及含义见附录2 | | chain | 字符串 | 在fields中包含wallet时必填 | 以狐钱包链代码选项及含义见附录1 | | walletType | 字符串 | 否 | chain参数为 wenchang-tianzhou 时有效
0x是EVM链地址格式,iaa是原生链地址格式 |申请授权用户资产列表查看接口(grantAssetView)
| 字段名 | 类型 | 必选 | 说明 | | ------ | ---------- | ---- | ------------------------------------------------------------ | | chains | 字符串数组 | 否 | 授权链列表. 当设置时, 用户只能在选择的链中授权链地址选项及含义见附录1 |
申请授权用户资产托管接口(grantAssetHosting)
| 字段名 | 类型 | 必选 | 说明 | | -------- | ------ | ---- | ---------------------------------------------------------- | | chain | 字符串 | 是 | 以狐钱包链代码选项及含义见附录1 | | class_id | 字符串 | 是 | 资产的分类ID | | token_id | 字符串 | 是 | 资产的TokenID | | type | 数字 | 是 | 资产类型选项及含义见附录3 | | amount | 数字 | 是 | 在 type 是 137和721时固定为1是1155时为需要托管的数量 |
申请授权用户资产转移接口(grantAssetTransfer)
| 字段名 | 类型 | 必选 | 说明 | | --------- | ------ | ---- | ---------------------------------------------------------- | | chain | 字符串 | 是 | 以狐钱包链代码选项及含义见附录1 | | class_id | 字符串 | 是 | 资产的分类ID | | token_id | 字符串 | 是 | 资产的TokenID | | type | 数字 | 是 | 资产类型选项及含义见附录3 | | amount | 数字 | 是 | 在 type 是 137和721时固定为1是1155时为需要托管的数量 | | recipient | 字符串 | 是 | 接收者地址 |
调用示例
try{
const params = {
fields: [YEEFOX_AUTH.UserInfoField.CODE, YEEFOX_AUTH.UserInfoField.WALLET, YEEFOX_AUTH.UserInfoField.PHONE],
chain: "wenchang-tianzhou"
}
const signInfo = await requestSign(params);
const serial = await yeefoxAuth.grantUserInfo(params, signInfo);
console.log("授权成功, 凭证序列号",serial)
}
catch(e){
console.error("授权失败", e);
}如果授权发生错误(用户拒绝, 参数错误等) 会抛出错误.
DApp授权接口 (不需要appId)
调用方式
直接调用实例的对应方法, 第一个参数为业务参数, 必填, 各个接口第一个参数见下面接口列表.
返回值为异步返回(Promise), 内容是各个接口的实际返回内容, 返回内容见下面接口列表.
在调用DApp接口前应该先检测DApp环境是否有效
if(YeefoxAuthSdk.dappAvailable()){
...
}
else{
console.error("未检测到DApp环境")
}接口及参数列表
DApp授权用户信息(getUserInfo)
| 字段名 | 类型 | 必选 | 说明 | | ------ | ---------- | -------------------------- | ------------------------------------------------------------ | | fields | 字符串数组 | 是 | 需要获取用户信息列表选项及含义见附录2, 只能取
code和wallet两个值 | | chain | 字符串 | 在fields中包含wallet时必填 | 以狐钱包链代码选项及含义见附录1 |返回值为对象
{ "code": "用户码", "wallet":"链地址" }
调用示例
if(YeefoxAuthSdk.dappAvailable()){
try {
const result = await yeefoxAuth.getUserInfo({
fields: [
YEEFOX_AUTH.UserInfoField.CODE,
YEEFOX_AUTH.UserInfoField.WALLET,
],
chain: 'wenchang-tianzhou',
});
console.log("授权成功, 用户信息",result)
}
catch (e){
console.error("授权失败", e);
}
}
else{
console.error("未检测到DApp环境")
}附录
1. 以狐钱包链代码(2023-09-26)
| 链代码 | 链名称 | | ----------------- | ------ | | wenchang-tianhe | 天和链 | | wenchang-tianzhou | 天舟链 | | conflux | 树图链 |
2. 用户信息字段含义
| UserInfoField 代码 | 值(字符串) | 意义 | | ------------------ | ---------- | ------ | | CODE | code | 用户码 | | WALLET | wallet | 链地址 | | PHONE | phone | 手机号 | | NICK_NAME | nickName | 昵称 |
3. 资产类型
| 值(数字) | 意义 | | -------- | ----------------------- | | 137 | Web3域名 | | 721 | NFT(Non-Fungible Token) | | 1155 | MT(Multi-Token) |
