3

所以我对 C# 很陌生,几天前我开始学习它,我想知道如何使用 C# 发布推文。我搜索了很多谷歌,看了一些 YouTube 视频,但它们都很旧。我找到了 Twitterizer.net,它有以下代码:

OAuthTokens tokens = new OAuthTokens();
tokens.AccessToken = "XXX";
tokens.AccessTokenSecret = "XXX";
tokens.ConsumerKey = "XXX";
tokens.ConsumerSecret = "XXX";

TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, "Hello,         #Twitterizer");
if (tweetResponse.Result == RequestResult.Success)
{
    messagebox.Show("Message Tweeted!");
}
else
{
   messageBox.Show("cannot tweet");
}

我将此代码放在一个按钮“button1”中,但它似乎不起作用,它会弹出一个消息框,说不能发推文。我不知道为什么会这样。我使用 twitterizer 将其放在顶部;。我还得到了我的消费者密钥、消费者密钥、令牌和令牌密钥。所以我不知道是什么问题,任何帮助将不胜感激。谢谢你!

4

2 回答 2

2

您应该使用 Twitter 回调。在 Twitter 的开发者部分进行设置。

尝试以下

using System;
using System.Diagnostics;
using TweetSharp;
using Hammock.Authentication.OAuth;

public static string Token = "XXX"
public static string TokenSecret = "XXX"
public static string ConsumerKey = "XXX"
public static string ConsumerSecret = "XXX"
public static string Callback = "XXX"

private static TwitterClientInfo TwitterClientInfo = new TwitterClientInfo()
{
    ConsumerKey = ConsumerKey,
    ConsumerSecret = ConsumerSecret,
};

private static TwitterService TwitterService = new TwitterService(TwitterClientInfo);

public static bool SetUpTwitter()
{
    var OAuthCredentials = new OAuthCredentials
    {
        Type = OAuthType.RequestToken,
        SignatureMethod = OAuthSignatureMethod.HmacSha1,
        ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
        ConsumerKey = ConsumerKey,
        ConsumerSecret = ConsumerSecret,
        CallbackUrl = "",
    };

    OAuthRequestToken requestToken = TwitterService.GetRequestToken(Callback);
    Uri authUrl = TwitterService.GetAuthorizationUri(requestToken, Callback);

    Process.Start(authUrl.AbsoluteUri);

    DateTime currentTime = DateTime.Now;
    DateTime endTime = currentTime.AddSeconds(30);
    while (currentTime < endTime)
    {
        currentTime = DateTime.Now;
    }

    OAuthAccessToken accessToken = TwitterService.GetAccessToken(requestToken);
    return SendMessage(accessToken.Token, accessToken.TokenSecret, "Send Sample Tweet");
}

public static bool SendMessage(string token, string tokenSecret, string message)
{
    Token = token;
    TokenSecret = tokenSecret;

    if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(tokenSecret))
        return SetUpTwitter();

    try
    {
        TwitterService.AuthenticateWith(token, tokenSecret);
        TwitterService.SendTweet(message);

        return true;
    }

    catch
    {
        return false;
    }
}
于 2012-01-30T19:20:14.610 回答
0

如果没有更多信息,就不可能为您提供帮助,因此,我不会给您确切的答案,而是尝试帮助您找出根本问题所在。

在该行上放置一个断点TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, "Hello, #Twitterizer");并调试您的应用程序。越过那条线,然后检查 的值tweetResponse.ErrorMessage。这应该会为您提供来自 Twitter 的原始错误消息(如果有的话)。如果没有,请查看tweetResponse.Content。此属性将包含来自 Twitter 的原始响应,可能是 json、xml 甚至 html,具体取决于问题。

如果您提交与 Twitterizer 有关的问题,几乎总是需要这些值来解决它们。

于 2012-01-31T20:17:20.347 回答