堆栈溢出!
我尝试使用
pywebpush
和 py_vapid
库从 Flask 应用程序发送 Web 推送通知,以使用 VAPID 密钥进行身份验证,但遇到错误,声称我的 VAPID 声明中缺少 aud
字段.
这是我用来发送通知的代码:
from pywebpush import webpush, WebPushException
vapid_private_key_pem = "KE0RL_B2SY1AVcpHRWgTzC68or6cLC4RZaHmkM4ZsLk"
def send_push_notification(subscription_info, data):
vapid_claims = {
"sub": "mailto:[email protected]",
"aud": "https://chat.bitsquad.ru/"
}
try:
response = webpush(
subscription_info=subscription_info,
data=data,
vapid_private_key=vapid_private_key_pem,
vapid_claims=vapid_claims
)
print("Push sent successfully: ", response)
return True
except WebPushException as ex:
print("Web push failure: ", repr(ex))
return False
尝试执行此函数时,我收到以下错误:
ValueError: Missing 'aud' from claims. 'aud' is the scheme, host and optional port for this transaction e.g. https://example.com:8080
为了诊断和纠正问题,我采取了几个步骤:
双重检查VAPID声明:我重新检查了
vapid_claims
的格式和内容,确保aud
、sub
和其他必要字段准确符合规范。
更新库:我确保使用最新版本的
pywebpush
和py_vapid
库,以消除由于过时的软件而出现错误的可能性。
日志记录:在发送通知之前,我添加了关键变量的日志记录,包括
vapid_claims
和subscription_info
,以确保其正确性。
检查私钥格式:我重新验证了我的 VAPID 私钥的格式,确保其符合预期标准并在代码中正确使用。
不幸的是,尽管我付出了一切努力,“索赔中缺少‘aud’”问题仍然存在,而且我正在达到
我遇到了同样的问题,然后我在某处读到 Python Webpush 库会为你处理填充 aud,所以我只提供一个空白字符串,然后事情就从那里开始工作:
"aud": "", # leave blank for library to fill in