【问题标题】:invalid api key无效的 API 密钥
【发布时间】:2011-08-17 10:49:40
【问题描述】:

我正在研究使用 Drupal 6 中的服务模块从一些 JSON 格式的自定义视图中获取数据。我在http://drupal.org/node/308629关注了一篇文章,创建了这个项目的vb版本(推送到https://sharpred@github.com/sharpred/ConsoleApplicationDrupal.git)

第一次运行我的代码时,我得到“无效的 API 密钥”,随后的运行返回“令牌之前已用于请求。使用另一个随机数密钥重试”。第二个错误是有点虚假的 IMO,因为我的代码每次运行时都会创建一个新的随机数。

我还注意到第一次运行在 services_timestamp_nonce 表中创建了一个条目,其中仅包含时间戳,但不包含 nonce 或域值。如果我删除这条记录,它会回到“无效的 api 密钥”消息。

该代码未经身份验证即可工作,并且来自站点上 /admin/build/services/browse/views.get 的方法调用也可以工作。

关于为什么这不起作用的任何想法?

搜索谷歌,“无效 api 密钥”的最常见来源似乎是使用的时间戳错误或 api 密钥与创建哈希时使用的域不匹配。据我所知,在我的情况下两者都不是真的。我在https://gist.github.com/1151222创建了用于创建时间戳和哈希的代码要点

任何人都可以帮助使这个过程正常工作吗?

【问题讨论】:

    标签: drupal drupal-services


    【解决方案1】:

    我在浏览了服务模块的代码后发现了这一点。我的多部分表单中的一些值没有用引号括起来,因此被 services_key_auth 模块作为空值处理。这意味着在第一遍中,只有时间戳被写入 nonce 表,并且由于引号,计算的哈希与我的哈希不匹配。在随后的更新中,该模块有效地搜索 null 的 nonce 值,并在数据库中找到一个,返回之前使用过的结果。如果其他人遇到此问题,请拉出我上面链接的 github 项目并查看我的代码。

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 2020-10-13
      相关资源
      最近更新 更多