Twitter:使用快速回复按钮发送Direct消息时出错

时间:2017-11-25 18:35:50

标签: twitter message tweetinvi

我需要快速回复发送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代码中的黑客)并改进了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 个答案:

没有答案