Давайте пойдем шаг за шагом здесь. Похоже, вы пытаетесь использовать OAuth только для аутентификации, но прежде чем вы сможете это сделать, вам нужно получить токен доступа, который будет использоваться для аутентификации при выполнении вызовов API.
Поскольку для этого используется OAuth версии 1, для получения токена доступа необходимо выполнить следующее:
- Сначала настройте приложение, позвоните на сайт, чтобы получить токен запроса (временные учетные данные), используя идентификатор клиента и секрет для приложения.
- Во-вторых, сделайте звонок на сайт, чтобы с первого шага авторизовать приложение с помощью токена запроса ( с обращением к пользователю, см. Ниже).
- В-третьих, после того, как авторизация была завершена, вы звоните на сайт, чтобы получить токен доступа (теперь, когда приложение авторизовано)
Я рекомендую использовать Почтальон для первых нескольких шагов, потому что они должны быть выполнены только один раз. Почтальон также будет обрабатывать генерацию timestamp
, nonce
и oauth signature
, если вы не используете библиотеку OAuth, то вам обязательно следует использовать Почтальон. Получив токен доступа, вы можете совершать звонки через CURL без каких-либо библиотек.
https://www.getpostman.com/
Первый шаг (настройка приложения)
Установите плагин WP OAuth 1, активируйте его, затем перейдите в пункт меню « Пользователи»> «Приложения» . Добавить новую заявку, заполнить имя и описание. Для обратного вызова либо URL-адрес, на который перенаправляется пользователь (после авторизации), либо oop
внеполосный поток, который перенаправляет на внутреннюю страницу, на которой отображается токен верификатора (вместо перенаправления).
https://github.com/WP-API/OAuth1/blob/master/docs/basics/Registering.md
Для того, чтобы перейти ко второму шагу должен быть сделан на ваш сайт, используя вызов ID клиента и секрет клиента из созданного приложения, чтобы получить временные данные (идентификатор запроса).
Откройте Почтальон, создайте новый вызов http://website.com/oauth1/request
, нажмите на вкладку Авторизация, выберите OAuth 1.0 из раскрывающегося списка, введите ключ клиента, Client Secret, установите метод подписи на 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
(идентификатор клиента) oauth_token
и oauth_token_secret
(с предыдущего шага). В моем примере это полный URL:
http://website.com/oauth1/authorize?oauth_consumer_key=TUPFNj1ZTd8u&oauth_token=J98cN81p01aqSdFd9rjkHZWI&oauth_token_secret=RkrMhw8YzXQljyh99BrNHmP7phryUvZgVObpmJtos3QExG1O
После того, как вы нажмете «Авторизовать», вы получите другой экран с токеном подтверждения. В моем примере это возвращенный токен подтвержденияE0JnxjjYxc32fMr2AF0uWsZm
Третий шаг (получить токен доступа)
Теперь, когда мы авторизовали приложение, нам нужно сделать один последний вызов, чтобы получить токен авторизации, который будет использоваться для выполнения всех ваших вызовов API. Так же, как на первом шаге я собираюсь использовать Почтальон (потому что подпись должна быть HMAC-SHA1), и это облегчает выполнение этих шагов в 100 раз.
Снова откройте Почтальон и измените URL на http://website.com/oauth1/access
Не забудьте добавить токен и секрет токена (значения с первого шага), затем нажмите « Параметры», чтобы отобразить поля под URL-адресом. Слева введите oauth_verifier и справа введите код со второго шага, верификационный токен
Убедитесь в том , чтобы нажать Update Request, а затем нажмите кнопку Отправить, и вы должны получить ответ обратно с 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