我正在研究如何使用Drupal6中的服务模块从一些JSON格式的自定义视图中获取数据。我关注了http://drupal.org/node/308629上的一篇文章,创建了这个项目的vb版本(推送到https://sharpred@github.com/sharpred/ConsoleApplicationDrupal.git)。
当我第一次运行我的代码时,我得到了“无效的API密钥”,随后的运行返回"token之前已经被用于一个请求。用另一个随机数密钥重试“。第二个错误有点虚假,因为我的代码每次运行时都会创建一个新的随机随机数。
我还注意到,第一次运行在services_timestamp_nonce表中创建了一个条目,该条目只包含时间戳,但不包含现时值或域值。如果我删除此记录,它将返回到"invalid api key“消息。
代码未经验证即可运行,来自站点上的/admin/build/services/browse/views.get的方法调用也可运行。
你有什么想法来解释为什么这个不起作用吗?
在google上搜索,“无效的api密钥”最常见的来源似乎是一个人使用的时间戳是错误的,或者api密钥与创建散列时使用的域不匹配。据我所知,这两种情况都不是真的。我创建了用于在https://gist.github.com/1151222上创建时间戳和散列的代码要点
有没有人能帮助我们让这个过程工作起来?
发布于 2011-08-18 08:17:38
在浏览了服务模块的代码后,我发现了这一点。我的多部分表单中的一些值没有用引号括起来,因此services_key_auth模块将其作为空值处理。这意味着在第一次传递时,只有时间戳被写入现时表,并且由于引号的原因,计算出的散列与我的散列不匹配。在随后的更新中,该模块有效地搜索nonce值为null,并在数据库中找到nonce值时,返回以前使用过的结果。如果其他人遇到这个问题,请拉出上面链接的github项目并查看我的代码。
https://stackoverflow.com/questions/7091564
复制