0

我已经编写了一小段代码,但无法弄清楚我哪里出错了。我要做的就是使用 tweetsharp 在 twitter 上执行搜索并返回结果。

这是代码:

protected void Page_Load(object sender, EventArgs e){
    _consumerKey = ConfigurationManager.AppSettings["ConsumerKey"];
    _consumerSecret = ConfigurationManager.AppSettings["ConsumerKey"];
    _accessToken = ConfigurationManager.AppSettings["accessToken"];
    _accessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"];

    TwitterClientInfo twitterClientInfo = new TwitterClientInfo();
    twitterClientInfo.ConsumerKey = _consumerKey;
    twitterClientInfo.ConsumerSecret = _consumerSecret;

    TwitterService service = new TwitterService(twitterClientInfo);

    //var service = GetAuthenticatedService();

    OAuthRequestToken requestToken = service.GetRequestToken();

    requestToken.OAuthCallbackConfirmed = true;
    requestToken.Token = _accessToken;
    requestToken.TokenSecret = _accessTokenSecret;

    Uri authUrl = service.GetAuthenticationUrl(requestToken);

    service.AuthenticateWith(_accessToken, _accessTokenSecret);



    var tweets = service.Search(new SearchOptions { Q = "#MetGala", Count = 100 });

    if (tweets != null)
    {

        foreach (var tweet in tweets.Statuses)
        {
            System.Diagnostics.Debug.WriteLine("{0} says '{1}", tweet.User.ScreenName, tweet.Text);
        }
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("FAIL");
    }

    FacebookFeed();
}
4

2 回答 2

0

I do the same thing in my WP7 app, here is some code that works for me (you seem to have the auth part ok. I use delegates in the asynch method call. Check the twitter search response, you'll probably see your error in there:

    _twitterService = (App.Current as App).Twitter;

    var searchOptions = new SearchOptions { Q = _hashTag.Name, IncludeEntities = false, Resulttype = _twitterSearchResultType };

    if (_returnedResultsCount != null)
        searchOptions.Count = _returnedResultsCount;

    _twitterService.Search(searchOptions, (twitterSearchResult, twitterSearchResponse) =>
    {
        try
        {
            if (twitterSearchResponse.StatusCode == HttpStatusCode.OK)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(IEnumerable<TwitterStatus>));

                    ser.WriteObject(ms, twitterSearchResult.Statuses);

                    byte[] data = ms.ToArray();

                    result(new LoadRequestResult(new MemoryStream(data)));
                }
            }
            else
            {
                result(new LoadRequestResult(new MemoryStream()));
            }
        }
        catch
        {
            result(new LoadRequestResult(new MemoryStream()));
        }
    });
于 2013-05-13T15:05:24.490 回答
0

你的问题是什么?什么不起作用?

据我所知,您有一些不需要的额外代码,但它应该可以使用:

protected void Page_Load(object sender, EventArgs e){
_consumerKey = ConfigurationManager.AppSettings["ConsumerKey"];
_consumerSecret = ConfigurationManager.AppSettings["ConsumerKey"];
_accessToken = ConfigurationManager.AppSettings["accessToken"];
_accessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"];

TwitterClientInfo twitterClientInfo = new TwitterClientInfo();
twitterClientInfo.ConsumerKey = _consumerKey;
twitterClientInfo.ConsumerSecret = _consumerSecret;

TwitterService service = new TwitterService(twitterClientInfo);

service.AuthenticateWith(_accessToken, _accessTokenSecret);



var tweets = service.Search(new SearchOptions { Q = "#MetGala", Count = 100 });

if (tweets != null)
{

    foreach (var tweet in tweets.Statuses)
    {
        System.Diagnostics.Debug.WriteLine("{0} says '{1}", tweet.User.ScreenName, tweet.Text);
    }
}
else
{
    System.Diagnostics.Debug.WriteLine("FAIL");
}

FacebookFeed();

}

于 2013-05-13T14:57:14.607 回答