如何在C#中发推文

时间:2012-01-30 19:06:54

标签: c# twitterizer

所以我对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将它放在顶部;我还得到了我的消费者密钥,consumersecret,token和tokensecret。所以我不知道是什么问题,任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

你应该使用Twitter Callback。在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;
    }
}

答案 1 :(得分:0)

如果没有更多信息,就无法为您提供帮助,因此,我会尝试帮助您找出潜在问题,而不是给您一个确切的答案。

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

如果您提交与Twitterizer有关的问题,则几乎总是需要这些值来对其进行问题排查。