0

我需要发送 Twitter 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 Web 请求失败。

为了构建我的请求,我尝试简化此示例:

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

但我错过了一些东西。我想这是查询中的一个小错误。我尝试了几种变体,但我无法获得更好的结果。当然,在我的代码中,我使用了一个真实的 userId,在这里我用 9 屏蔽了它。

你能建议我对我的查询进行工作更正吗?(也许有使用多个标签的例子)

更新。

我尝试使用 TwitterAccessor(在 Tweetinvi 代码中没有 hack)并改进了 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。在发布之前创建凭据标题的方法应该完成这项工作。

4

0 回答 0