You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TweetinviAPI 5.0.4的C#代码中为推文添加媒体附件

实现带媒体附件的推文发布(Tweetinvi 5.0.4 + Twitter API v2)

要实现带媒体的推文发布,你需要按照Twitter API v2的请求结构,在TweetV2PostRequest类中添加媒体相关属性,让序列化后的JSON包含media嵌套字段(内部含media_ids数组)。

1. 修改请求模型类

更新TweetV2PostRequest及新增配套类,适配Twitter的媒体附件请求格式:

using Newtonsoft.Json;
using System.Collections.Generic;
using System.Text;
using Tweetinvi.Models;
using Tweetinvi;

namespace MainData.Twitter_API_v2
{
    public class TweetsV2Poster
    {
        private readonly ITwitterClient client;

        public TweetsV2Poster(ITwitterClient client)
        {
            this.client = client;
        }

        public Task<ITwitterResult> PostTweet(TweetV2PostRequest tweetParams)
        {
            return this.client.Execute.AdvanceRequestAsync(
                (ITwitterRequest request) =>
                {
                    var jsonBody = this.client.Json.Serialize(tweetParams);
                    var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
                    request.Query.Url = "https://api.twitter.com/2/tweets";
                    request.Query.HttpMethod = HttpMethod.POST;
                    request.Query.HttpContent = content;
                }
            );
        }
    }

    public class TweetV2PostRequest
    {
        [JsonProperty("text")]
        public string Text { get; set; } = string.Empty;

        [JsonProperty("media")]
        public TweetMediaAttachment Media { get; set; }
    }

    public class TweetMediaAttachment
    {
        [JsonProperty("media_ids")]
        public List<string> MediaIds { get; set; } = new List<string>();
    }
}

2. 更新调用代码

上传图片后,将获取到的media.id传入请求模型的媒体ID列表中:

// 获取图片字节数组
GetItemshopImage dailyData = new GetItemshopImage();
var itemshopImg = dailyData.GetItemshopImg();

// 初始化Twitter客户端
var client = new TwitterClient(
                "x",
                "x",
                "x",
                "x"
            );

// 上传图片到Twitter
var uploadedMedia = await client.Upload.UploadTweetImageAsync(itemshopImg);

// 发布带媒体的推文
var poster = new TweetsV2Poster(client);
ITwitterResult result = await poster.PostTweet(
    new TweetV2PostRequest
    {
        Text = "myText",
        Media = new TweetMediaAttachment
        {
            MediaIds = new List<string> { uploadedMedia.MediaId.ToString() }
        }
    });

核心说明

  • Twitter API v2要求媒体附件通过media.media_ids数组传递,数组元素为字符串格式的已上传媒体ID。
  • 如果需要添加多张图片/媒体,只需将多个媒体ID依次加入MediaIds列表即可。
  • 确保项目已引用Newtonsoft.Json NuGet包,否则JsonProperty特性无法正常工作。

内容的提问来源于stack exchange,提问作者Pooki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:00:43