You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中验证RightSignature私有API Token遇invalid_token错误求解决

RightSignature API 请求返回 invalid_token 问题排查与解决

问题场景

作为Python新手,尝试通过私有API Token连接RightSignature API,按官方文档要求携带API Token、Client ID和Client Secret请求/public/v2/me端点获取用户信息,私密信息存储在.env文件中,但请求返回{"error":"invalid_token","error_description":null}。

原代码:

from flask import Flask, request, jsonify
import os
import requests
from dotenv import load_dotenv


API_HOST = "api.rightsignature.com"

load_dotenv()
API_TOKEN = os.environ.get("API_TOKEN")
CLIENT_ID = os.environ.get("client_id")
CLIENT_SECRET = os.environ.get("client_secret")

headers = {
    "private-api-key" : API_TOKEN,
    "client-id" : CLIENT_ID,
    "client-secret" :CLIENT_SECRET

}

url = "https://{}/public/v2/me".format(API_HOST)

response = requests.get(url, headers=headers)
print(response.text) 

排查与解决步骤

1. 校验环境变量键名匹配

.env文件中的变量名通常采用全大写格式(如CLIENT_ID、CLIENT_SECRET),但原代码中使用小写键名client_id、client_secret获取值,可能导致加载不到正确的凭证。

  • 确认.env文件内的键名与代码中os.environ.get()的参数完全一致(包括大小写)
  • 示例修正:将代码中的client_id改为CLIENT_ID,client_secret改为CLIENT_SECRET

2. 验证凭证有效性

  • 登录RightSignature开发者后台,确认API Token、Client ID、Client Secret是最新生成且未过期的,同时具备访问/public/v2/me端点的权限
  • 用curl直接测试凭证,排除代码逻辑问题:
curl -H "private-api-key: YOUR_API_TOKEN" -H "client-id: YOUR_CLIENT_ID" -H "client-secret: YOUR_CLIENT_SECRET" https://api.rightsignature.com/public/v2/me

若curl也返回相同错误,需重新生成有效凭证。

3. 检查请求头命名格式

部分API对请求头的大小写有严格校验,尝试将请求头改为官方文档指定的驼峰格式:

headers = {
    "Private-API-Key": API_TOKEN,
    "Client-ID": CLIENT_ID,
    "Client-Secret": CLIENT_SECRET
}

4. 调试环境变量加载状态

在代码中添加打印语句,确认环境变量是否成功加载:

print("API_TOKEN:", API_TOKEN)
print("CLIENT_ID:", CLIENT_ID)
print("CLIENT_SECRET:", CLIENT_SECRET)

若输出为None,说明.env文件路径错误或格式有误(需确保文件与脚本同目录,键值对为KEY=VALUE格式,无多余空格)。

5. 确认端点URL正确性

核对官方文档,确认/public/v2/me是当前可用的端点路径,部分API版本更新可能导致路径变更。

修正后示例代码

from flask import Flask, request, jsonify
import os
import requests
from dotenv import load_dotenv

API_HOST = "api.rightsignature.com"

load_dotenv()
# 统一使用大写键名匹配.env文件格式
API_TOKEN = os.environ.get("API_TOKEN")
CLIENT_ID = os.environ.get("CLIENT_ID")
CLIENT_SECRET = os.environ.get("CLIENT_SECRET")

# 调试打印,确认凭证加载状态
print("Loaded credentials:")
print(f"API_TOKEN: {API_TOKEN}")
print(f"CLIENT_ID: {CLIENT_ID}")
print(f"CLIENT_SECRET: {CLIENT_SECRET}")

# 采用驼峰式请求头命名
headers = {
    "Private-API-Key": API_TOKEN,
    "Client-ID": CLIENT_ID,
    "Client-Secret": CLIENT_SECRET
}

url = f"https://{API_HOST}/public/v2/me"

response = requests.get(url, headers=headers)
print("Response status code:", response.status_code)
print("Response text:", response.text)

内容的提问来源于stack exchange,提问作者jkcom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:30:57