Twitter: Ошибка отправки прямого сообщения с помощью кнопок быстрого ответа

Мне нужно отправить DM DM с быстрым ответом.

Я использую Tweetinvi, который на данный момент не поддерживает быстрые ответы, поэтому я попытался изменить запрос в коде Tweetinvi на максимально возможном уровне: непосредственно перед отправкой в ​​Twitter.

Если я отправлю это (основное сообщение)

https://api.twitter.com/1.1/direct_messages/new.json?text=hello&user_id=999999999

Оно работает

Когда я отправляю это

https://api.twitter.com/1.1/direct_messages/new.json?text=MessageToUserId&user_id=999999999&quick_reply&type=options&options=[label=RedBird&description=Adescriptionabouttheredbird.&metadata=external_id_1]

Я получил статус 401 Веб-запрос не удался.

Чтобы построить мой запрос, я попытался упростить этот пример:

https://developer.twitter.com/en/docs/direct-messages/quick-replies/api-reference/options

Но я что-то упустил. Я полагаю, это тривиальная ошибка в запросе. Я попробовал несколько вариантов, но я не могу получить лучший результат. Конечно, в моем коде я использую настоящий userId, который здесь я замаскировал с помощью 9.

Можете ли вы предложить мне исправление моего запроса? (возможно с примерами, использующими несколько меток)

Обновить.

Я попытался использовать TwitterAccessor (без хаков в коде Tweetinvi) и улучшил JSON

Вот мой обновленный код

Auth.SetUserCredentials(consumerKey, consumerSecret, userAccessToken, userAccessSecret);
var authenticatedUser = User.GetAuthenticatedUser();
var qString = JsonConvert.DeserializeObject("{ 'event': { 'type': 'message_create', 'message_create': { 'target': { 'recipient_id': '123456789' }, 'sender_id': '987654321', 'message_data': { 'text': 'option?', 'quick_reply': { 'type': 'options', 'options': [ { 'label': 'option 1', 'metadata': 'val1', 'description': 'option 2' }, { 'label': 'val2', 'metadata': 'option 3', 'description': 'val3' } ] } } } } }");
var strEncoded = WebUtility.HtmlEncode(qString.ToString());
var url = "https://api.twitter.com/1.1/direct_messages/events/new.json";
var result = TwitterAccessor.TryExecutePOSTQuery($"{url}?{strEncoded}");

Теперь у меня есть ошибка 401, с этим описанием: "Несанкционированный - учетные данные аутентификации отсутствовали или неверны".

Который намного лучше. Возможно, мне просто нужно добавить заголовки учетных данных, используя TwitterAccessor, но мне нужна помощь по этому поводу.

Я полагаю, что добавление чего-то TwitterAccessor. Метод создания заголовков учетных данных до того, как публикация выполнит свою работу.

0 ответов

Другие вопросы по тегам