我使用PHP Extension创建了OAuth提供程序。这在我的开发环境中工作正常,但在将其移动到我们的临时服务器之后,我一直收到错误消息:
oauth_problem=signature_method_rejected
我通过在连接到自身的登台服务器上连接测试脚本,连接登台服务器的开发服务器以及使用PHP OAuth扩展和Zend OAuth Consumer类来测试它。在每种情况下,它在连接到开发服务器时都有效,但在连接到临时服务器时会出现上述错误。
跟踪代码,在实例化OAuthProvider类时会出现错误。
$this->provider = new OAuthProvider();
检查$ _SERVER ['QUERY_STRING']给出了以下内容:
oauth_consumer_key=6e449c12132115a9ba1cf1163c37f904&
oauth_nonce=e2ff158969b3e7213927e4a19de1b11f&
oauth_timestamp=1343990462&
oauth_signature_method=HMAC-SHA1&
oauth_version=1.0&
oauth_callback=redacted&
oauth_signature=y06YvCzVno8GSDib4%2BOeExDGWH0%3D
(为了便于阅读而插入了插入符号)
正如您所看到的,签名方法是有效的(我已尝试过规范中提到的其他方法,但它们无法在登台服务器或开发服务器上运行。
之前有没有人遇到这样的事情?如果需要更多信息,请告诉我。
答案 0 :(得分:1)
你能检查一下你是否有任何htauth东西阻塞?此外,您的应用程序是否会在http和https连接之间跳转并进行潜水?
我相信你有htauth设置阻止我建议修改你的vhost的通信:
订单拒绝,允许 否认所有人 AuthType Basic AuthName“保护区” 的AuthUserFile 需要有效用户 允许从您的IP地址
如果你把它放在你的vhost引用你的公共文件夹中,这应该允许ip地址在没有htpasswd的情况下进行通信....
谢谢,
答案 1 :(得分:0)
我通过将SIGNATURE_METHOD = HmacSHA1
更新为HMAC-SHA1
来解决此问题。