ОБНОВЛЕНИЕ 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"