我已根据此处的指南在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 Bad Request: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 =& #34; Iu5qXE",oauth_version =" 1.0",oauth_signature =" KOn7AfMCpRCi1Tei1jMLiZ2eZmo%3D"`
我的所有标题都显示在请求标题中,并且它不会说任何其他参数都不存在,例如version
或oauth_token
我试过四处搜寻并不断挠头,感谢任何帮助。
谢谢。
答案 0 :(得分:0)
不确定这是否有助于其他人,但我发现问题出在我的解决方案中:
当我第一次实例化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();