Как исправить код 215: неверные данные аутентификации в Twitter Oauth (прямые сообщения)? - PullRequest
0 голосов
/ 17 января 2019

ОБНОВЛЕНИЕ 2

РЕШЕНО, я пропустил инструкции по обучению для строки заголовка в https://developer.twitter.com/en/docs/basics/authentication/guides/authorizing-a-request.html

Ответ на мой вопрос: Заголовки не должны содержать никаких данных json.

Вот мой полностью функциональный проект, просто введите свои учетные данные, и вы готовы отправлять прямые сообщения в Twitter: https://github.com/ricarrrdo/gs-rest-service

Примечание: Я использую Spring устаревший AsyncRestTemplate, поэтому, если кто-то знает, как использовать новый WebClient, обновите метод restASyncClientBody () внутри Application.java - это было бы очень признательно!

ОБНОВЛЕНИЕ 1

https://github.com/ricarrrdo/gs-rest-service/blob/master/src/main/java/hello/Application.java#L2-L12

Эта ссылка выше - мой весенний загрузочный проект, воссоздающий приведенный в Твиттере пример на https://developer.twitter.com/en/docs/basics/authentication/guides/creating-a-signature.html для аутентификации и авторизации запроса API. Работает нормально, просто скомпилируйте / запустите с mvn spring-boot:run и посмотрите вывод консоли. Вы можете check lines 41-52, это те же параметры, что и в примере с Twitter.

Проблема / Вопрос

Я пытаюсь отправить прямое сообщение в Twitter через Twitter API, но получаю ошибку Bad Authentication data. Как мне изменить свой код, чтобы можно было отправлять прямые сообщения?

Я имею в виду: в https://developer.twitter.com/en/docs/basics/authentication/guides/creating-a-signature.html есть пример того, как создать действительный заголовок Oauth с использованием параметров x-www-form-urlencoded. Но как мне создать действительные заголовки Oauth при отправке Json?

Твиттер учебник для прямых сообщений здесь - https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/new-event

Примечания

Заголовок авторизации, необходимый для отправки прямого сообщения:

авторизация: OAuth oauth_consumer_key = "YOUR_CONSUMER_KEY", oauth_nonce = "AUTO_GENERATED_NONCE", oauth_signature = "AUTO_GENERATED_SIGNATURE", oauth_signature_method = "HMAC-SHA1", oauth_timestamp = "AUTO_GENERATED_TIMESTAMP", oauth_token = "USERS_ACCESS_TOKEN", oauth_version = "1.0"

...