直达内容

Mixin API 指引

选择 API 服务器#

对于 HTTP 请求:

域名类型
https://api.mixin.oneGlobal
https://mixin-api.zeromesh.netChina Or Global

对于 WebSocket 请求:

域名类型
wss://blaze.mixin.oneGlobal
wss://mixin-blaze.zeromesh.netChina Or Global

调用 API#

大多数 API 需要使用 JSON Web 令牌 (JWT) 进行签名才能访问。 它们利用客户端和服务器之间的安全数据传输。

签名#

tip

大多数 Mixin SDK 已经提供了 JWT 生成器,可以自动处理 JWT 生成和验证。 更多信息请参考 SDK

JWT Header

参数说明
algSignature Algorithm, set to RS512
typToken type, set to JWT

JWT Payload

参数说明
uidUser Id
sidSession Id
iatissued at
expExpiration Time
jtiJWT ID
sigSignature

使用 Go 语言进行 JWT 签名

/** uid: User Id* sid: Session Id* secret: PrivateKey* method: HTTP Request method, e.g.: GET, POST* url: URL path without hostname, e.g.: /transfers* body: HTTP Request body, e.g.: {"pin": "encrypted pin token"}*/func SignAuthenticationToken(uid, sid, secret, method, uri, body string) (string, error) {  expire := time.Now().UTC().Add(time.Hour * 24 * 30 * 3)  sum := sha256.Sum256([]byte(method + uri + body))  token := jwt.NewWithClaims(jwt.SigningMethodRS512, jwt.MapClaims{      "uid": uid,      "sid": sid,      "iat": time.Now().UTC().Unix(),      "exp": expire.Unix(),      "jti": uuid.NewV4().String(),      "sig": hex.EncodeToString(sum[:]),  })
  block, _ := pem.Decode([]byte(secret))  key, err := x509.ParsePKCS1PrivateKey(block.Bytes)  if err != nil {      return "", err  }  return token.SignedString(key)}

一个 JWT 示例

eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzMwOTY0ODUsImlhdCI6MTUyNTMyMDQ4NSwianRpIjoiMjU5NGFkNTctOWRhZC00MjRmLTg1OTUtYjE0NzI3ZTI0ZTYxIiwic2lkIjoiYzA5Y2YzMTMtN2RlZC00MjVkLWFkM2YtYTFjZTRjZmQ1ZTVlIiwic2lnIjoiODVkZDIzOGE5ODM0NzE3ZGMxM2QzODQ0ZjYzYTFmZWUxM2Q4MmQyZTZjMmVlNDRlYWM3Yzc5MGY1ZGIyNWY4OCIsInVpZCI6Ijg5ZTBiZGVlLWMzNTUtNDdmMi05NDVhLWJlNDhiZTg3NTYwNiJ9.PYg6Cx5grs0flJe862R3VLEWKyTZPcXOGYF9RouztgR_mi3kleIzJt4vCwUZI9F7QrHBFMtTc3_wG_ymnnjsmnm0pBdoON4I-RxeaztIlyc1Ey9lLFe6_ARRUBXo_15ZORilS1hRdMREd84eQOLlO0ChieBPY0tSSiVqTaFZt3Q

你可以在 jwt.io 这样的工具查看 JWT。

发送携带 JWT 的请求

将签名的 JWT 添加到 API 请求的标头以获取当前 dApp 的 profile:

curl -i -H "Content-Type: application/json" \        -H "Authorization: Bearer YOUR_TOKEN_HERE" \        "https://api.mixin.one/me"

API 返回#

Mixin API 返回的 HTTP 状态码符合 RFC 规范。

成功时:

{  "data": {...}}

或者

{  "data": [...]}

失败时:

{  "error": {    "status": 500,    "code": 500,    "description": "Internal Server Error"  }}

更多请参考错误码文档