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

求助:KeyAuth结合Python校验许可证过期状态失败问题

KeyAuth Python许可证过期校验修复方案

你的代码主要有几个问题导致判断失效:

  • 重复调用keyauthapp.license(key),冗余且可能干扰返回值判断
  • 错误将license方法的返回值当作布尔值判断,实际上它返回的是包含验证详情的字典
  • 没有正确提取并判断密钥的过期状态

以下是修正后的完整代码:

import hashlib
import sys
import time
from keyauth import api  # 确保正确导入keyauth库

def getchecksum():
    md5_hash = hashlib.md5()
    # 修复哈希校验:读取当前脚本文件而非拼接命令行参数
    with open(sys.argv[0], "rb") as file:
        md5_hash.update(file.read())
    digest = md5_hash.hexdigest()
    return digest

keyauthapp = api(
    name = "MYNAME",
    ownerid = "MOWNERID",
    secret = "MYSECRETCODE",
    version = "1.0",
    hash_to_check = getchecksum()
)

def answer():
    key = input('Enter your license: ')
    # 仅调用一次license验证,获取完整响应
    response = keyauthapp.license(key)
    
    # 先验证密钥是否有效
    if response["success"]:
        # 检查密钥是否过期:KeyAuth返回的expires字段为"Never"表示永久,否则为Unix时间戳
        if response["expires"] == "Never" or float(response["expires"]) > time.time():
            print("密钥有效且未过期,执行功能")
            # 在这里编写你的业务逻辑代码
        else:
            print("密钥已过期,请更换密钥")
    else:
        # 打印具体错误信息,方便调试
        print(f"密钥验证失败: {response['message']}")

# 调用函数测试
answer()

关键修复点说明:

  • 哈希校验改为读取当前脚本文件(sys.argv[0]),避免命令行参数干扰
  • 仅调用一次license方法,获取包含success、expires、message等字段的响应字典
  • 分两步判断:先确认密钥验证成功,再检查过期状态(对比Unix时间戳或判断是否为永久密钥)
  • 错误分支打印具体错误信息,便于排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:35:10