PRESS.one 开发者社区

PRESS.one 开发者社区

  • 文档
  • 博客
  • 开发者论坛

›REST API 文档

指南

  • 简介
  • DApp 开发流程
  • 创建 DApp
  • 数字签名相关知识
  • PRS 协议

REST API 文档

  • 概述
  • API 鉴权
  • 用户授权
  • 获取数字签名
  • 签名文件相关
  • 合约相关
  • 钱包相关

Node.js SDK 文档

  • SDK 安装
  • 用户授权
  • 签名文件相关
  • 合约相关
  • 钱包相关

用户授权

用户在 PRS 注册时,PRS 会产生一对密钥,我们称之为 Root Key。Root Key 由用户或者由 PRS 代为保存,只有拥有私钥才可以进行创建签名、运行合约等操作。

由于 DApp 没有用户的私钥,如果此时 DApp 也需要帮用户进行签名等操作,那么根据 PRS 协议的规定,DApp 可以通过数字签名的方式,进行授权从而获取签名文件等权限,这个过程我们称之为用户授权。

下面是用户授权的过程是:

  1. 生成一对新的密钥,我们称之为 Sub Key。
  2. 用户使用 Root Key 遵照 PRS 协议,对 Sub Key 进行数字签名。
  3. 签名成功及授权成功,此时 Sub Key就拥有了创建签名和运行合约的权限。

Web 页面授权

为了简化授权的流程,PRS 提供了 Web 授权页面页面,开发者只要引导用户跳转到指定授权页面即可。用户在授权页面确定授权后,页面会回调至 REDIRECT_URL/?code=CODE,此时开发者可以拿到对应的 code 换取 access token。

  1. 获取 Web 授权地址,引导用户跳转至 PRS 提供的授权页面。
https://${host}/developer/apps/${address}/authorize

  • 'host': 主站域名,正式环境为https://press.one,测试环境为https://beta.press.one。
  • 'address': DApp 在 PRS 中的唯一标识,创建 DApp 后可获取到 address。
  1. 用户跳转至授权页面后,如下图。会在页面中显示 DApp 的相关信息以及权限范围,如果用户点击确认授权,页面将跳转至 REDIRECT_URL/?code=CODE,开发者即可以获取返回的 code 来换取 access token。
  • REDIRECT_URL: 创建 DApp 时填入的授权回调 Url。
  • code: 开发者可以获取获取 code,使用该 code 换取 access token

  1. 开发者调用换取 token 接口,请求授权 access token。

  2. 使用授权后的 token 即可进行签名发布文件、创建合约等操作。

换取 token api

POST /api/v2/apps/${address}/authenticate

post data

根据规定,所有 post 参数都包装在 payload 中。

参数类型备注
codestring用户在授权页面确定授权后返回的 code

header

该接口采用数字签名的方式进行鉴权,根据 PRS 协议,开发者使用 DApp privateKey 对 post data 进行签名,将签名的信息放入 http header。

参数类型备注
Content-Typestringapplication/json
X-Po-Auth-AddressstringDApp address
X-Po-Auth-Msghashstringpost data 的 hash 值
X-Po-Auth-Sigstring对 hash 的签名

更多鉴权内容请参考API 鉴权。

curl -X POST https://beta.press.one/api/v2/apps/6b16c956d963e2c38e07d49af37b66a1de490a97/authenticate \
  -H "Content-Type: application/json" \
  -H "X-Po-Auth-Address: 6b16c956d963e2c38e07d49af37b66a1de490a97" \
  -H "X-Po-Auth-Msghash: 7b61f7ee90d333017e4fc822adf196030ef8ae457c6f8d7b2f6b8776a6a50c6e" \
  -H "X-Po-Auth-Sig: 7a405ca5a2f8d925e70be5346b7b3974a8f9b172c755555ba149cca8cc9c737e6c3e7d35e17893ea5893fb0515d0c5019f3ddd5ce716e813506a4f146eeefd9a1" \
  -d '{ "payload": { "code": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1NTExOTU5MTUsImp0aSI6Ijg5M2NiMjAwLTNiNTQtNDYzNC1hODNlLWU3ZmJmNzQ3YjVjNiIsImRhdGEiOnsidXNlckFkZHJlc3MiOiJjYjdiNzUxMDNjNzMzY2M1NzQzYTM5MGZhZjdiZGVkYzYxNzg2ZTI5IiwiYXBwQWRkcmVzcyI6IjZiMTZjOTU2ZDk2M2UyYzM4ZTA3ZDQ5YWYzN2I2NmExZGU0OTBhOTciLCJ0eXBlIjoicGhvbmUifSwicHJvdmlkZXIiOiJwcmVzc29uZSIsImV4cCI6MTU1MTQ1NTExNX0.KQeimVWpEnTs-8FyvDYh-mppG1_kMKiPGZOf8mY3pfA" } }'
← API 鉴权获取数字签名 →
  • Web 页面授权
  • 换取 token api
文档
介绍基础知识创建 DApp创建合约
社区
TwitterMedium微信公众号开发者论坛
更多
官方博客GitHub
Copyright © 2023 PRESSone