貔貅OAuth认证接口

OAuth认证

OAuth(开放授权)是一个开放标准。OAuth允许用户让第三方应用访问该用户在貔貅上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

貔貅OAuth认证允许用户将一个受限制的令牌(token)授权给第三方应用。第三方应用可以通过令牌访问用户在貔貅上的资源,例如用户资料,交易记录,挂单买卖。

OAuth是一个涉及到资源网站(貔貅交易所), 第三方应用, 以及用户三方的流程。本文档的目标读者是第三方应用的开发人员, 描述了资源网站(貔貅交易所)与第三方应用之间的交互流程。

OAuth Client注册

第三方应用必须事先在貔貅注册,获取client id/secret之后才能使用貔貅OAuth接口。具体步骤请通过网站下方联系方式联系管理员。

注册之后您将获得client id/secret, 请妥善保管。

发起授权请求

当用户想要授权您的应用访问貔貅时,应用生成如下地址交给用户访问(通过外置或者内嵌浏览器):

GET https://peatio.com/oauth/authorize?client_id=<your_client_id>&redirect_uri=<registered_rediret_uri>&response_type=code&scope=<scopes>

'response_type'参数必须是'code'. 'redirect_uri'必须和您注册应用时提供的redirect_uri相同. 'scope'参数代表您的应用想要获得的授权。目前貔貅支持三种授权:

  • profile: 用户基本信息
  • history: 用户交易记录
  • trade: 买卖挂单

例如,您的应用想访问用户基本信息和交易记录:

scope=profile+history+trade

用户访问该地址会看到一个授权页面,决定是否授权。用户同意授权后貔貅交易所会生成auth code, 并通过redirect_uri传回给您的应用.

通过Auth Code获取User Token

获得auth code之后,表明用户已经同意了授权。应用通过如下请求获得访问令牌(user token), 也就是APIv2 access/secret key:

POST https://peatio.com/oauth/token
Params: client_id=<your_client_id>&client_secret=<your_client_secret>&code=<auth_code>&grant_type=authorization_code&redirect_uri=<registered_rediret_uri>

'grant_type'参数必须是'authorization_code'. 'redirect_uri'必须和您注册应用时提供的redirect_uri相同。'code'参数传入上一步拿到的auth code.

貔貅交易所验证请求后,返回user token和refresh token. User token是一个包含APIv2 access/secret key的字符串, 形式如下:

<access_key>:<secret_key>

拿到user token后,将其用冒号':'分隔开,就得到了APIv2 access/secret key, 此时您的应用就可以通过APIv2访问用户授权的资源了。

Refresh token用于在user token过期后获取新的user token, 请妥善保管。

更多关于APIv2的信息,请访问 APIv2文档

更新User Token (APIv2 access/secret key)

通过OAuth授权获得的APIv2密钥有效期为4小时。使用过期密钥访问貔貅交易所会得到一个特定的错误信息, 错误代码2010:

{"error"=>{"code"=>2010, "message"=>"The access key xxxxx has expired."}}

此时通过上一步获得refresh token可以获取新的user token:

POST https://peatio.com/oauth/token
Params: client_id=<client_id>&client_secret=<client_secret>&grant_type=refresh_token&refresh_token=<refresh_token>

注意事项

请勿将client id, client secret, 或者refresh token保存在用户设备上。

相关资料

  • http://zh.wikipedia.org/wiki/OAuth
  • http://oauth.net/