У меня есть API для отдыха WordPress и плагины настройки сервера WordPress OAuth, и я пытаюсь выполнить аутентификацию с помощью http://sevengoslings.net/~fangel/oauth-explorer/ каждый раз, когда контент вызова не дает мне токена 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
Здесь они не смогли получить 3-legged OAuth1.0a для работы, поэтому использовали базовый OAuth, который требует другого плагина и не рекомендуется для производства.
Должен ли я использовать другой метод подписи?
Я ищу две команды curl, чтобы получить грант OAuth от сервера, а другой - для торговли этим грантом для токена доступа + refresh.
У меня есть это, чтобы работать, и я расскажу, как я это сделал.
Я использую приложение 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.