Maze.Guru API 入门
认证流程


1.
{"appId":"appId","timestamp":xxxxx}
2.
Authorization``{"secretKeyVersion":"1","appId":"appId","sign":"signature", "original": "signature original"}
3.
代码演示
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA256
from Crypto.Signature import pkcs1_15
import requests
import time
import json
import base64
# RSA Signature
def rsa_sign(data, rsa_key):
h = SHA256.new(data.encode('utf-8'))
signature = pkcs1_15.new(rsa_key).sign(h)
return str(base64.b64encode(signature), encoding = "utf-8")
# RSA Verification
def rsa_sign_verify(data, sig, rsa_key):
try:
h = SHA256.new(data.encode('utf-8'))
pkcs1_15.new(rsa_key).verify(h, base64.b64decode(sig))
ret = True
except (ValueError, TypeError):
ret = False
return ret
def test(appid):
now = int(time.time())
# build message
plain_text = {
"appId": appid,
"timestamp": now
}
original = json.dumps(plain_text, separators=(',', ':'))
print(f"original {original}")
auth = {
"appId": appid,
"secretKeyVersion": "1",
"sign": sign(original),
"original": original
}
headers = {"Authorization": json.dumps(auth, separators=(',', ':'))}
print(f"headers {headers}")
response = requests.get(f"https://open.maze.guru/api/v1/style-base-infos", headers=headers)
response.encoding = "utf-8"
def sign(text):
private_key_base64_str = 'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKuaRcAYkmDxKObdC5YNGllsMCdnNNLE71zEmvScqAdNCBbf3gaytd5BtN9v+YdZYqXSq8WkyhfRRHGPZ/O7zQ/4I1MKK7wNTeyVmarwMfCkSxIa5coqJTV68dqWayI69pvQLYBqwfKqiMbvDY/WrvpA8uSRPSMfiJttyr7Ei/rVAgMBAAECgYA+R2IzInfVmRCYIPc4gQ7kD2C2nD1OlUyt5Wi7iDNvWuSpsJva4Hci78PeJ7xvA+DKf9f5hiIWXMuzTzGSAsGcBvY0rgghpBKfX58pL3Ete/cny4UGpBwuVWAgQo+HG4XywIti9KfWJaX8gzEdT/q81N5tOWJeVGdfECs+JDNRwQJBANJG7xdU+9XMZWmxXlm4W2WTDVGPMqPPqfy3oWiAa0Q9K5su0pIEeGEcobxF9CMWpuej5Ontxo2uM7T9h3ShFXECQQDQ6oa19wLnF5UIIAsTwNtgL2UIksQ+cEwSK/+cabkCGbCLHpuXjOUuOQIWVj73PZAAyknugF53bBbaXk9UozmlAkAFsSHbsdM3UFcWa1SwfQsMTtS3dnbadE6XpqjZ2VAOAtHhW30bsr9Hcaz3GbWoFX7jGk6h/mu3fhWsOoimIY4hAkAkWMk7G1CL+BRbp4eF1kXUhCplxXMTEeKKPtFn2xTvAp0udxLG2SJ+Wji8viCST0mgeZFHR1ooGMwZDdNrfEJpAkEApG6GgYbzqYSbxon2n2QuUif8j6XyOKpveQbLhjcCCy3BOGV1+JSYZ+iuueGBbHXnBxlfCXC8RJdhwpJjQRoV8Q=='
public_key_base64_str = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrmkXAGJJg8Sjm3QuWDRpZbDAnZzTSxO9cxJr0nKgHTQgW394GsrXeQbTfb/mHWWKl0qvFpMoX0URxj2fzu80P+CNTCiu8DU3slZmq8DHwpEsSGuXKKiU1evHalmsiOvab0C2AasHyqojG7w2P1q76QPLkkT0jH4ibbcq+xIv61QIDAQAB'
private_key=base64.b64decode(private_key_base64_str)
public_key=base64.b64decode(public_key_base64_str)
sign = rsa_sign(text, RSA.importKey(private_key))
print(f"sign:{sign}")
sign_result = rsa_sign_verify(text, sign, RSA.importKey(public_key))
print(f"sign_result:{sign_result}")
return sign
if __name__ == "__main__":
appid = 'wja0q53lmql4cm2yd1'
test(appid)
网关 URL(基本 URL)
QPS限制
响应格式
{
"code": 200,
"msg": "",
"data": {}
}
{
"code": 201,
"msg": "Signature has expired",
"data": null
}
错误代码
错误代码 | 错误信息 |
---|---|
20110001 | 提示中含有敏感词 |
20110002 | 种子图片链接不正确或不受支持 |
20110003 | 种子图像包含敏感信息 |
20110004 | 职位不存在 |
20110005 | 作业密钥不存在 |
20110007 | 型号不存在 |
20110008 | 作业正在生成,无法撤销/加速 |
20110009 | 职位状态已更改,请刷新 |
20110010 | 积分余额不足 |
20110011 | 该作业不在队列中且无法撤销 |
20010015 | 不支持的尺寸/分辨率 |
20110000 | 文本翻译失败 |
1000 | 错误未知 |
1001 | 请求参数无效 |
1005 | 令牌认证失败 |
1024 | 图片参数无效 |
1054 | 这件艺术品是高分辨率的 |
1056 | style_id不存在 |
1062 | 签名已过期 |
1063 | 该作业不属于当前用户 |
1088 | 风格化必须介于 0 到 1000 之间 |
1090 | 工作还没准备好 |
修改于 2024-03-13 05:47:13