Gravity Forms API总是401

时间:2016-08-12 20:05:43

标签: wordpress gravity-forms-plugin

我正在尝试使用重力形式rest api,https://www.gravityhelp.com/documentation/article/web-api/,但无论我尝试什么,我都会收到401错误。我尝试过使用文档和Steven Henty的文章https://www.stevenhenty.com/gravity-forms-api/中列出的所有方法,但它似乎不起作用。

如果我以管理员身份登录wordpress网站,我将无法使用以下链接:

http://mydomain/gravityformsapi/forms/

感谢您的任何建议。

4 个答案:

答案 0 :(得分:5)

对于我的情况,我没有点击更新按钮" Web API"标签

确保点击更新按钮,虽然它确实显示了API密钥,但您仍然需要点击更新按钮才能启用API。

答案 1 :(得分:2)

由于路线端点有些奇怪,我得到了同样的东西。在计算签名时,您在路线上使用尾部斜杠:forms/1

但你在URL中使用了一个尾部斜杠(否则我得到了301 Moved Permanently):

http://demo.gravityforms.com/gravityformsapi/the_route/?api_key...

/?api_key...看起来很奇怪,但这对我有用。

Here's the ruby example我正在使用demo credentials

GravityFormsAPI.generate_URL(site: 'demo.gravityforms.com', route: 'forms/1', public_api_key: '5b225f8382', private_api_key: 'fc6d1bc71d2ebfc')

希望这有帮助。

答案 2 :(得分:1)

有些人在经过大量研究后发现了这篇文章

,我收到了间歇性的401错误

Azure DocumentDB Intermittent 401 error when querying REST API via Obj-c

如果签名包含+符号,我收到401错误

也许可以帮助其他人

对不起我的英文写作

答案 3 :(得分:0)

基于solution here我发布此答案。
想象一下,您创建了网址,但它没有工作,您获得了401.然后经过一段时间后,您意识到Opps的错误!我传递的参数需要一个括号,你再次运行代码,你再次获得401。 那是为什么?

这是因为apiKey,Signature和Expire时间参数相同,您只使用GET请求更改了其他参数。但是,这三个参数用于对用户进行身份验证,这意味着生成的拒绝权限的旧签名将无论如何都会再次拒绝。

所以要解决这个问题,我只是将过期时间从1577922200更改为1577933200。我可以将它改为任何东西,但事情是我只需要提供一些新东西,以便生成新的签名。所以,当我改变它开始工作。

其他可能的原因

使用SHA1进行签名时,根据文档使用NSString *string_to_sign = [NSString stringWithFormat:@"%@:%@:%@:%@",api_key,http_method,route,expires]; 。但是为了使CCHmac你必须传递两件事:

  1. 关键
  2. 数据
  3. 并基于link创建为

    const char *cKey  = [api_private_key cStringUsingEncoding:NSASCIIStringEncoding];
    const char *cData = [string_to_sign cStringUsingEncoding:NSASCIIStringEncoding]; 
    

    所以我误以为我在API Key而不是cKey使用API Private Key。所以我按照教程说的改变了它并且它起作用了。否则我得到401无论我尝试什么。