PHP OAuthProvider :: report问题“oauth_parameters_absent”,但参数在那


PHP OAuthProvider :: reportProblem "oauth_parameters_absent" but parameters are there

我已经按照这里的准则在Zend Framework2中设置了一个OAuthProvider:https://toys.lerdorf.com/archives/55-Writing-an-OAuth-Provider-Service.html 和这里:http://www.lornajane.net/posts/2011/php-oauth-provider-request-tokens。

一旦我添加了该行$this->provider->checkOAuthRequest();我就会收到一个错误的请求:

400 错误请求:oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key%26oauth_signature%26oauth_nonce%26oauth_timestamp

我的标题如下:

授权: OAuth oauth_consumer_key="key",oauth_token="qwerty",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1453821463",oauth_nonce="Iu5qXE",oauth_version="1.0",oauth_signature="KOn7AfMCpRCi1Tei1jMLiZ2eZmo%3D"'

我所有的标头都显示在请求标头中,并且没有说任何其他参数都不存在,例如versionoauth_token

我尝试四处搜索并不断挠头,任何帮助都值得赞赏。

谢谢。

不确定这是否会帮助其他人,但我发现了我的解决方案的问题:

当我第一次实例化OAuthProvider()时(根据文档),它对我在构造函数中提供一个签名方法大喊大叫,所以我做到了。经过几天的挠头,试图弄清楚为什么这一直给我错误,我从构造函数中删除了签名方法参数,就像上面的引用一样。

在这种变化之后,一切似乎都解决了。我不确定为什么会发生这种情况,但它现在不会出错,并使用其 oauth 参数设置$provider。

我的代码:

$provider = new OAuthProvider();
$provider->consumerHandler(array($this,'lookupConsumer'));
$provider->timestampNonceHandler(array($this,'lookupNonce'));
$provider->tokenHandler(array($this,'lookupToken'));
$provider->setRequestTokenPath('/oauth/request-token');
$provider->checkOAuthRequest();