gpt4 book ai didi

c# - 如何在 C# 中将图像发布到 Twitter

转载 作者:行者123 更新时间:2023-12-04 05:49:18 25 4
gpt4 key购买 nike

我想通过 C# 将图像发布到我的 Twitter 帐户。我可以获得访问 token 代码,一切都很好,但我调查了一个 PHP 代码

 $tmhOAuth = new tmhOAuth(array(
'consumer_key' => OAUTH_CONSUMER_KEY,
'consumer_secret' => OAUTH_CONSUMER_SECRET,
'user_token' => $oauth_token,
'user_secret' => $oauth_token_secret,
));

$image = "{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}";

$code = $tmhOAuth->request('POST', 'https://upload.twitter.com/1/statuses/update_with_media.json',
array(
'media[]' => "@{$image}",
'status' => " " . $status, //A space is needed because twitter b0rks if first char is an @
'lat' => $lat,
'long' => $long,
),
true, // use auth
true // multipart

在 PHP 代码中, OAuth类有一个请求方法。在 C# 方面,我使用了 Twitterizer 库,它在 OAuth 中没有任何请求方法类。然后我用了 Webclient而不是请求方法。但是我需要一些凭据来发布数据。但我不知道什么/为什么我使用用户名和密码。实际上,我不想使用任何凭据。我可以使用什么来代替凭据?

第二个问题是,我总是收到授权错误(401)这里是代码
  OAuthTokenResponse responseToken = OAuthUtility.GetAccessToken(ConsumerKey, ConsumerSecret, oauth_token, oauth_verifier);
OAuthTokens accessToken = new OAuthTokens();
accessToken.AccessToken = responseToken.Token;
accessToken.AccessTokenSecret = responseToken.TokenSecret;
accessToken.ConsumerKey = ConsumerKey;
accessToken.ConsumerSecret = ConsumerSecret;

TwitterResponse<TwitterUser> twitterResponse = TwitterAccount.VerifyCredentials(accessToken);
System.Net.ServicePointManager.Expect100Continue = false;
if (twitterResponse.Result != RequestResult.Unauthorized)
{
try
{
string URL = "https://upload.twitter.com/1/statuses/update_with_media.json";

WebClient client = new WebClient();

client.Credentials = new System.Net.NetworkCredential(uName, pass);
NameValueCollection postData = new NameValueCollection();
postData.Add("status", status);
postData.Add("media[]", Encoding.ASCII.GetString(bytesOfImage));
byte[] b = client.UploadValues(URL, "POST", postData); // 401 error.
}
catch (Exception e)
{
return e.Message;
}

那么我的代码中的问题在哪里?

最佳答案

您可以在 LINQ to Twitter 中使用 TweetWithMedia 方法执行此操作,如下所示:

    static void TweetWithMediaDemo(TwitterContext twitterCtx)
{
string status = "Testing TweetWithMedia #Linq2Twitter " + DateTime.Now.ToString(CultureInfo.InvariantCulture);
const bool possiblySensitive = false;
const decimal latitude = StatusExtensions.NoCoordinate; //37.78215m;
const decimal longitude = StatusExtensions.NoCoordinate; // -122.40060m;
const bool displayCoordinates = false;

const string replaceThisWithYourImageLocation = @"..\..\images\200xColor_2.png";

var mediaItems =
new List<Media>
{
new Media
{
Data = Utilities.GetFileBytes(replaceThisWithYourImageLocation),
FileName = "200xColor_2.png",
ContentType = MediaContentType.Png
}
};

Status tweet = twitterCtx.TweetWithMedia(
status, possiblySensitive, latitude, longitude,
null, displayCoordinates, mediaItems, null);

Console.WriteLine("Media item sent - Tweet Text: " + tweet.Text);
}

关于c# - 如何在 C# 中将图像发布到 Twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10274058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com