开发导读
Youloge平台提供一整套[涵盖用户、支付、网盘、视频、评论...]完全授权的开发接口服务平台,方面整合到开发者自己的服务,自由组合API接口或直接使用
umd.js包。
你可以随意组合接口类到自己的网络服务,同时获得丰厚的积分奖励,例如:
- 使用login登录注册 让你的网站接入OAuth2.0 服务(用户个人资料全部开放共享)
- 您已有自己网站博客 接入 wallet 钱包类,实现接收RGB ,在通过wallet数字礼品类接口转增给好友家人
- 还可以接入 article文章类 video视频等类到自己网站,形成自己的素材展示。
开发接口通信协议Youloge.RPC
APIkey/Secret 是开发者必备密钥串,可前往个人中心-APIKey获取~或使用调试APIKEY
开发第一步 认识路由
- 直接访问
https://api.youloge.com可以得到如下字典
{
"id": null,
"result": [
{
"uuid": 10,
"name": "登录注册",
"path": "/login/index",
"perm": 0,
"desc": "登录注册接口"
},
{
"uuid": 11,
"name": "账户管理",
"path": "/account/index",
"perm": 0,
"desc": "账户相关接口"
},
...
]
}- uuid 是控制器ID Youloge.API的错误码为
6位数字这里指的前2位 - name 是控制器名称
- path 是控制器路由
- perm 是控制器权限
- desc 是控制器描述
- 随便挑选一个路由访问
https://api.youloge.com/login/index
{
"id": null,
"result": [
{
"uuid": 1011,
"name": "授权码",
"path": "/login/authorize",
"perm": 0,
"desc": "授权码接口"
},
{
"uuid": 1014,
"name": "PassKey登录",
"path": "/login/passkey",
"perm": 4,
"desc": "PassKey登录接口"
},
...
]
}- uuid 是方法ID Youloge.API的错误码为
6位数字这里指的前4位 - name 是方法名称
- path 是方法路由
- perm 是方法权限
- desc 是方法描述
开发第二步 认识权限
- 开放接口 0 000
- 验证登录 1 001 needLogin
- 开发账户 2 010 needAdmin(验证APIKEY所有人与当前登录用户为同一人)
- 二次验证 4 100 needChallenge(验证Passkey或TOTP动态令牌)
权限可以互相组合
- 例如
1+2=3即为needLogin+needAdmin即为验证登录+开发账户 - 例如
1+4=5即为needLogin+needChallenge即为验证登录+二次验证
开发第二步 如何调用
https://api.youloge.com 网页前端可以直接调用 请求标头:
Organization: {APIkey*必填}Authorization: {AccessToken*可选}
https://vip.youloge.com 只能后端调用且绑定固定IP 请求标头:
Organization: {APIkey*必填}Authorization: {Signature*可选}Signature为AccessToken通过Secret二次AES解密获得:
加解密数据封装signature
数据关系
接口返回 ==> signature(加密数据)
signature(加密数据) + secret(二次AES解密) ==> 解密数据JSON格式(uuid,mail...,signer,expire)
VIP接口场景:请求头需要signer来自于解密登录signature 验证支付场景:验证成功会立即返回signature解密可得到money local等信息
- 什么地方会用到加解密数据
- 进行单点登录,对数据进行解密验证,可获得用户signer,expire,signature
- 验证用户支付完成后的返回
txt
signer 用户调用唯一凭证
expire 用户凭证过期时间
signature 获取的凭证是否来源与你的签名`apikey`signature解密验证 secret - 进行AES对称解密即可(服务端调用,不要暴漏) signer - base64 编码二进制 加密数据
php
// 我以php为例 其他语言都是一样的原理
public function signer_decrypt($signer,$secret='')
{
$bin = base64_decode($signer);
return openssl_decrypt(substr($bin,16),'AES-128-CBC',base64_decode($secret),1,substr($bin,0,16));
}
// $signer 每个方法 对应需要验证的数据不同signature 不仅用于登录,在wallet 支付 等需要加密通信的地方都会使用到