gpt4 book ai didi

php - WordPress REST API OAuth curl 命令

转载 作者:IT王子 更新时间:2023-10-29 00:59:29 28 4
gpt4 key购买 nike

我有 WordPress rest APIWordPress OAuth server setup plugins设置并尝试使用 http://sevengoslings.net/~fangel/oauth-explorer/ 进行身份验证每次通话内容都没有给我所需的 OAuth token 或 OAuth secret 。

我尝试了这些步骤 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 

在这里,他们无法让 3-legged OAuth1 .0a 正常工作,所以他们使用了基本的 OAuth,这需要另一个插件,不推荐用于生产。

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

我正在寻找两个 curl 命令以从服务器获取 OAuth 授权,另一个用于将此授权交换为访问 token +刷新 token 。

最佳答案

我已经让这个工作了,我将概述我是如何做到这一点的。

我正在使用 Postman application测试和完善 API 调用。我强烈建议使用这个。调用正常后,您可以导出到 PHP Curl(或任何您需要的)。

If you use Postman you can view my API calls using this shared link.

对于您遇到问题的第一次通话,我有以下设置

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

{{url}}/oauth1/request

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

我添加了我在 WP Backend > Users > Applications 中创建的 consumer_key 和 consumer_secret(这是通过 OAuth 插件添加的)。

签名方法-HSAC-SHA1

然后 Postman 将更新它并动态创建您的 Nonce、时间戳和版本。

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

然后我确保我启用了选项:- 将参数添加到标题- 为签名添加空参数

这是我得到的参数:

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

我可以使用 Postman 将此 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 身份验证 3 步过程中的第 1 步。我才刚刚开始连接它们的旅程。那里的文档不多,示例也不多。

第 2 步看起来像是使用提供的 token 和密码调用/oauth1/authorize。这看起来需要用户登录并创建一个新的(和永久的) token 和 secret 。

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

我没有成功地将第 2 步和第 3 步正确链接在一起,但我认为我应该发布以帮助解决有关第一步未返回正确标记的原始查询

This article是解释如何使用 WP-API 和 OAuth 的更好的人之一。

关于php - WordPress REST API OAuth curl 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357786/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com