状态:400;消息:令牌已验证,但对应用<app_id>无效

1 投票
1 回答
1243 浏览
提问于 2025-05-01 08:51

我正在用Python(Django)开发一个应用程序,想要触发一个事件,让另一个应用程序接收到,这个过程是通过Pusher来实现的。

但是在尝试触发事件时,我遇到了以下错误:

状态:400;消息:令牌已验证,但对应用程序<app_id>无效

我用来测试连接和触发事件的代码如下:

import pusher
p = pusher.Pusher(app_id=settings.PUSHER_APP_ID, key=settings.PUSHER_API_KEY, secret=settings.PUSHER_SECRET)
p['a_channel'].trigger('an_event', {'some': 'data'})

我已经确认我传给Pusher构造函数的所有凭证参数都是正确的,甚至直接在调用中使用了这些参数,但还是没有成功。

这个问题在Django应用程序和命令行脚本中都出现,结果完全一样。

有没有人知道可能是什么问题呢?

暂无标签

1 个回答

2

为了让其他人更明白,我想多说几句。我在我的circleci构建出现问题时找到了这个问题,使用的值都是一样的。

如果你使用的是config.yml文件,app_id会被当作一个整数来处理。出于某种原因,这会让pusher的认证机制感到困惑。你需要把你的id用引号包起来,比如:

docker:
  image: ...
  environment:
    PUSHER_APP_ID: "12345"

而不是下面这个错误的版本:

docker:
  image: ...
  environment:
    PUSHER_APP_ID: 12345

其他的值就没有这个问题,因为它们包含字母,这样YAML解析器就会把这些值当作字符串来处理。

撰写回答