2013-05-09 41 views
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(); 
} 

回答

0

我做同樣的事情在我的WP7的應用程序,在這裏是一些適合我的代碼(你似乎有auth部分ok,我使用異步方法調用代理,檢查twitter搜索響應,你可能會看到你的錯誤:

_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())); 
     } 
    }); 
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(); 

}