WordPress rest API OAuth команды curl

36

У меня есть 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.

  • 1
    Можете ли вы предоставить некоторые примеры кода, которые вы уже пробовали? Ваша установка OAuth принимает запросы POST? Доступна ли ваша настройка для других?
Теги:
curl
oauth

1 ответ

4

У меня есть это, чтобы работать, и я расскажу, как я это сделал.

Я использую приложение 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню