WordPress的restAPI OAuthcurl命令

我有WordPress的restAPI和WordPress OAuth服务器安装插件设置,并试图使用http://sevengoslings.net/~fangel/oauth-explorer/进行身份validation,每次通话内容不给我的OAuth令牌或OAuth秘密我需要。

我尝试了这些步骤https://wordpress.org/support/topic/json-rest-api-from-mobile-app-with-authentication

1. Enter base url (http(s)://your.domain.com/oauth1 2. Access token = request 3. Authorize = authorize 4. Access_Token = access 5. Enter your consumer key and secret (leave method as HMAC-SHA1) 

点击Get Request Token ,您将获得呼叫内容

我应该在通话内容中得到这个

 Call content now = oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true 

但是我只能得到这个

  page not found 

在这里,他们无法获得三脚OAuth1.0a的工作,所以他们使用基本的OAuth,这需要另一个插件,不build议生产。

我应该使用不同的签名方法吗?

我正在寻找两个curl命令来从服务器获得OAuth授权,另一个交易授权访问令牌+刷新令牌。

我有这个工作,我会概述我是如何做到这一点。

我正在使用Postman应用程序来testing和完善API调用。 我强烈build议使用这个。 一旦你有电话工作,你可以导出到PHP Curl(或任何你需要的)。

如果您使用Postman,则可以使用此共享链接查看我的API调用。

对于第一个电话你有麻烦我有以下设置

首先,我确定我的端点URL是:

 {{url}}/oauth1/request 

我将我的API调用设置为PUSH,将我的AuthType设置为OAuth 1.0

我添加了我在WP后端>用户>应用程序中创build的consumer_key和consumer_secret(这是随OAuth插件一起添加的)。

签名方法 – HSAC-SHA1

然后邮差会更新这个dynamic创build您的现时,时间戳和版本。

我把我的领域设置为“示例”

然后,我确保我启用了选项: – 添加参数到标题 – 添加空的参数签名

这是我得到的参数:

 realm="Example",oauth_consumer_key="AdPuqyWrAQQc",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1470248765",oauth_nonce="dnOTvG",oauth_version="1.0",oauth_signature="gUahTX2hfV1lqZCfMUvHtLLoauI%3D" 

这为我提供了以下输出:

 oauth_token=xbTb4E93K6pP2tcg4qGJIYgl&oauth_token_secret=qWo01WL2ish205yvjiU8qyCkKVPMNUvSbKpFBB1T1oOuOtBc&oauth_callback_confirmed=true 

我可以使用邮递员将这个API调用导出到一个cURL函数,如果是的话,我得到以下内容:

 $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "http://mydomain.dev/oauth1/request", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_consumer_key\"\r\n\r\nAdPuqyWrAQQc\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_token\"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature_method\"\r\n\r\nHMAC-SHA1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_timestamp\"\r\n\r\n1470241356\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_nonce\"\r\n\r\n7VKp4N\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_version\"\r\n\r\n1.0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"oauth_signature\"\r\n\r\n9qRrIkDxt56S9Ikf061eFOVLAdA%3D\r\n-----011000010111000001101001--", CURLOPT_HTTPHEADER => array( "authorization: OAuth realm=\"Example\",oauth_consumer_key=\"AdPuqyWrAQQc\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1470248765\",oauth_nonce=\"dnOTvG\",oauth_version=\"1.0\",oauth_signature=\"gUahTX2hfV1lqZCfMUvHtLLoauI%3D\"", "cache-control: no-cache", "content-type: multipart/form-data; boundary=---011000010111000001101001", "postman-token: dd85258e-a72a-b731-82d1-00109e30962f" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo 'response ' . $response; $a = parse_str($response); echo 'token ' . $oauth_token; echo '<br>'; echo 'secret '. $oauth_token_secret; } 

这是OAuth身份validation的3步过程的第1步。 我刚刚开始我的旅程,把他们连接起来。 这里没有太多的文档,没有太多的例子。

第2步看起来就像调用/ oauth1 / authorize所提供的令牌和秘密。 这看起来像然后需要用户login和一个新的(和永久)令牌和秘密创build。

第3步看起来像是调用/ oauth1 / access

我没有成功地得到步骤2和步骤3正确链接在一起,但我想我应该后援以原始查询关于第一步不返回正确的标记

本文是解释如何使用WP-API和OAuth的更好的文章之一。