Ответ 1
У меня есть это, чтобы работать, и я расскажу, как я это сделал.
Я использую приложение Postman для тестирования и улучшения вызовов API. Я очень советую использовать это. После того, как вы получили работу с вызовом, вы можете экспортировать в PHP Curl (или все, что вам нужно).
Если вы используете Postman, вы можете просматривать мои вызовы API с помощью этой общей ссылки.
Для Первого вызова у вас возникают проблемы с установкой следующих параметров
Во-первых, я убедился, что мой конечный URL-адрес:
{{url}}/oauth1/request
Я установил свой API-вызов PUSH и мой AuthType на OAuth 1.0
Я добавил свои user_key и consumer_secret, которые я создал в WP Backend > Users > Applications (это добавлено с плагином OAuth).
Метод подписи - HSAC-SHA1
Затем Postman обновит это и динамически создаст ваш Nonce, Timestamp и Version.
Я ставлю свое царство как "Пример"
Затем я убедился, что включил опции: - Добавить Params в заголовок - Добавить пустые параметры в подпись
Вот что я получаю для своих параметров:
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;
}
Это шаг 1 трехэтапного процесса аутентификации OAuth. Я только начинаю путешествовать, чтобы соединить их всех. Там не так много документации и не много примеров.
Шаг 2 выглядит как вызов /oauth 1/authorize с предоставленным токеном и секретом. Похоже, что тогда требуется вход в систему пользователя, и создается новый (и permenant) токен и секрет.
Шаг 3 выглядит как вызов /oauth 1/access
Я не успел сделать шаг 2 и шаг 3, чтобы правильно связать, но я думал, что должен опубликовать, чтобы помочь с исходным запросом о первом шаге, не возвращая правильные токены
Эта статья является одной из лучших, объясняя, как использовать WP-API и OAuth.