OAuth签名不匹配

时间:2015-04-27 作者:Sudarshan Anbazhagan

我在wordpress中使用以下内容来开发基于oauth的应用程序。

WP-API (api生成插件)

WP API OAuth1 (oauth服务器)和

WP API client-cli (oauth客户端库)

下面的url用于wp客户端clihttps://man-sudarshann-1.c9.io/api/

我收到了这个错误OAuth signature does not match 当我单击AUTH按钮来验证请求时。我已经在互联网上尝试了所有的修复方法。但没有任何帮助

api客户端生成和发送的签名为3ko8DUsUUEB4Hqaks68vGYnTjQM=

服务器端生成的签名为5rPsul6zplhfNvb4o+Mz11O/OyI=

所以下面的代码失败了

if ( ! hash_equals( $signature, $consumer_signature ) ) {
    return new WP_Error( \'json_oauth1_signature_mismatch\', __( \'OAuth signature does not match\' ), array( \'status\' => 401 ) );
}
我猜API控制台生成了错误的签名。请帮我解决这个问题。

4 个回复
最合适的回答,由SO网友:bilalshahid10 整理而成

在尝试将客户端CLI与OAuth 1.0a插件一起使用时,我遇到了类似的问题,但我找到了一个解决方案here 在官方存储库上。

在文件中lib/class-wp-json-authentication-oauth1.php 在线524, 更改以下代码:

$base_request_uri = rawurlencode( get_home_url( null, parse_url( $_SERVER[\'REQUEST_URI\'], PHP_URL_PATH ), \'http\' ) );
收件人:

$home_url_path = parse_url(get_home_url (null,\'\',\'http\'), PHP_URL_PATH );
$request_uri_path = parse_url( $_SERVER[\'REQUEST_URI\'], PHP_URL_PATH );
if (substr($request_uri_path, 0, strlen($home_url_path)) == $home_url_path) {
    $request_uri_path = substr($request_uri_path, strlen($home_url_path));
}
$base_request_uri = rawurlencode( get_home_url( null, $request_uri_path, \'http\' ) );
这应该可以解决您面临的问题。

SO网友:sMyles

确保正确处理签名请求:http://oauth1.wp-api.org/docs/basics/Signing.html

如果您使用的是POSTMAN,则可以在授权下将其设置为OAuth 1.0,然后选择选项

将空参数添加到签名中编码OAuth签名保存助手数据以请求以下是我编写的关于使用OAuth 1和Postman with WordPress的详细教程:https://wordpress.stackexchange.com/a/239873/51201

SO网友:Master Ace

在邮差之下Authorization 尝试取消选择“Add params to header“。

SO网友:Thupten

检查baseurl转发。在我的例子中,在将baseurl更新为www.example之后,非www被转发到www。com格式它对我有用。

结束

相关推荐

WP-API RESTFULL JSON和POST META?

好的,我正在使用这个插件:https://github.com/WP-API/WP-API/ 将我的站点转换为rest完整API,效果很好。。然后我使用ths插件添加自定义帖子元:https://wordpress.org/plugins/types/我的问题是,我似乎无法查询url端点以返回我的帖子元,就像我在查询以下内容一样:get_post_meta( $post_id, $key = \'\', $single = false ) 我该怎么办?克里斯