【问题标题】:Status: 400; Message: Token validated, but invalid for app <app_id>状态:400;消息:令牌已验证,但对应用程序 <app_id> 无效
【发布时间】:2014-12-30 10:02:26
【问题描述】:

我正在使用 Python (Django) 构建一个应用程序,并尝试触发由 Pusher 代理的另一个应用程序接收的事件。

尝试触发事件时,我收到以下错误:

状态:400;消息:令牌已验证,但对应用程序

无效

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

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 应用程序和命令行脚本中,两者的结果完全相同。

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

【问题讨论】:

  • 那条信息不是很有帮助,是吗!听起来身份验证过程已验证(请求已正确签名),但不知何故它与app_id 不匹配。我认为 Web API 响应非常神秘,值得 ping Pusher 支持。
  • 嘿菲尔!感谢回复。我已经向他们发送了一条消息,但希望这将是我的部分愚蠢的东西,另一双眼睛可以很容易地发现,或者是其他人知道如何解决的足够常见的东西。我想我会等着看 Pusher 的支持。干杯!
  • 唯一想到的是双重、三重、四重检查您设置的凭据是否正确。我知道你说你已经验证了凭证参数。但是,任何可能 app_id、app_key 和 app_secret 被混淆了,例如在需要 app_id 的地方使用 app_key。响应表明凭据混淆。
  • 我遇到了这个确切的问题,解决方案正如@leggetter 建议的那样,但我的 env app_id 和 app_secret 设置不正确。

标签: python django pusher


【解决方案1】:

只是为其他人详细说明。当我的 circleci 构建没有使用相同的值时,我发现了这个问题。

如果您使用的是 config.yml 文件,则 app_id 被视为整数。由于某种原因,这会混淆推送器身份验证机制。您必须将您的 id 用引号括起来,例如:

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

相对于不正确的版本:

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

其他值不受此影响,因为它们包含强制 YAML 解析器将值视为字符串的字母。

【讨论】:

  • 谢谢,安倍。这实际上是自发布此问题以来我在其他软件中多次遇到的一种问题。不过,从来没有想过来这里更新它,所以谢谢你这样做。 :)
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多