Ходімо тут крок за кроком. Схоже, ви намагаєтесь використовувати OAuth лише для автентифікації, але перш ніж це зробити, вам потрібно отримати маркер доступу, який буде використовуватися для аутентифікації під час здійснення дзвінків API.
Оскільки для цього використовується OAuth версії 1, для отримання маркера доступу необхідно зробити наступне:
- Спочатку налаштуйте програму, зателефонуйте на сайт, щоб отримати маркер запиту (тимчасові облікові дані), використовуючи ідентифікатор клієнта та секрет для програми
- По-друге, зателефонуйте на сайт, щоб з першого кроку авторизувати додаток із запитом маркера (звернення до користувача, див. Нижче).
- По-третє, після завершення авторизації ви здійснюєте дзвінок на сайт, щоб отримати маркер доступу (тепер, коли заявку було дозволено)
Я рекомендую використовувати Postman протягом перших кількох кроків, оскільки їх потрібно виконати лише один раз. Поштальон також буде працювати з генеруванням timestamp
, nonce
і oauth signature
, якщо ви не використовуєте бібліотеку OAuth, вам слід абсолютно використовувати Postman. Коли у вас є маркер доступу, ви можете здійснювати дзвінки через CURL без бібліотек.
https://www.getpostman.com/
Перший крок (налаштування програми)
Встановіть плагін WP OAuth 1, активуйте його, а потім перейдіть до пункту меню в розділі Користувачі> Програми . Додати нову заявку, заповнити назву та опис. Для зворотного дзвінка або URL-адресу для перенаправлення користувача на (після авторизації), або oop
для потоку поза межами діапазону, який перенаправить на внутрішню сторінку, на якій відображається маркер перевірки (замість перенаправлення).
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
Щоб перейти до другого кроку, вам потрібно здійснити виклик на ваш сайт, використовуючи ідентифікатор клієнта та секрет клієнта зі створеного додатку, щоб отримати тимчасові облікові дані (Запит жетону).
Відкрийте листоношу, створіть новий дзвінок http://website.com/oauth1/request
, натисніть на вкладку Авторизація, виберіть зі спадного меню пункт OAuth 1.0, введіть Ключ клієнта, Клієнтський секрет, встановіть спосіб підпису HMAC-SHA1
, увімкніть додавання парами до заголовка, кодування підпису Oauth та натисніть кнопку Оновити запит
Листоноша автоматично створить для вас підпис, без уваги та часові позначки та додасть їх до заголовка (можна переглянути на вкладці Заголовки).
Клацніть Надіслати, і вам слід отримати відповідь, що включає oauth_token
та oauth_token_secret
:
Ці значення будуть використані на наступному кроці для авторизації програми під вашим обліковим записом користувача WordPress.
Другий крок (авторизуйте додаток)
Крок авторизації потрібно виконати лише один раз, цей крок орієнтований на користувача та той, з яким всі знайомі. Цей крок необхідний, оскільки ви використовуєте OAuth1, і додаток потрібно пов’язати з обліковим записом користувача WordPress. Подумайте, коли сайт дозволяє вам увійти з Facebook ... вони направляють вас у Facebook, де ви входите та натискаєте "Авторизувати" ... це потрібно зробити, просто через ваш сайт WordPress.
Я рекомендую використовувати цей веб-браузер для цього кроку, оскільки ви можете просто встановити змінні в URL-адресі, і це надає сторінку "Авторизувати" для авторизації програми.
Відкрийте веб-браузер і введіть URL-адресу свого веб-сайту, наприклад:
http://website.com/oauth1/authorize
Тепер додайте до цієї URL-адреси oauth_consumer_key
((ID клієнта) oauth_token
та oauth_token_secret
(з попереднього кроку). У моєму прикладі це повна URL-адреса:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
Після натискання кнопки "Авторизувати" ви отримаєте інший екран із маркером підтвердження. У моєму прикладі це повернений маркер підтвердженняE0JnxjjYxc32fMr2AF0uWsZm
Третій крок (отримати маркер доступу)
Тепер, коли ми авторизували додаток, нам потрібно зробити останній дзвінок, щоб отримати маркер авторизації, який буде використовуватися для здійснення всіх ваших дзвінків API. Так само, як і перший крок, я збираюся використовувати Postman (оскільки підпис повинен бути HMAC-SHA1), і це полегшує виконання цих кроків на 100 разів.
Відкрийте листоношу знову та змініть URL-адресу на http://website.com/oauth1/access
Не забудьте додати Token та Token Secret (значення з першого кроку), а потім натисніть Параметри, щоб показати поля під URL-адресою. Ліворуч введіть в oauth_verifier і праворуч введіть код з другого кроку, верифікатор перевірки
Переконайтесь, що натисніть Оновити запит, потім натисніть Надіслати, і вам слід отримати відповідь, oauth_token
і oauth_token_secret
... це те, що вам потрібно для здійснення дзвінків API! Відкиньте оригінали з кроку 1, збережіть їх у своєму коді чи в іншому місці безпеки.
Потім можна здійснити виклик API на свій сайт, встановивши заголовки із поверненим маркером та секретом маркера.
Ви можете пропустити це декількома способами через заголовок авторизації, у параметрах GET або POST (якщо закодовано як application / x-www-form-urlencoded). Майте на увазі, що ОБОВ'ЯЗКОВО пройти підпис, часову позначку та без позначення. Я не усвідомлював, як довго мені знадобиться ця відповідь, тож я завтра оновлю це прикладом того, як зробити це з вашим кодом.
Я настійно рекомендую встановити журнал Rest API, щоб ви могли переглядати журнал викликів API, і бачити, що було надіслано, повернуто тощо. Це допоможе надзвичайно налагодити.
https://github.com/petenelson/wp-rest-api-log