2012-05-03 65 views
5

我需要幫助在Windows手機直接上傳圖片到Twitter 7.上傳圖像直接到Twitter

我與Twitter的OAuth的流程進行,也可以可以更新微博,但我一直沒能上傳圖片使用wp7的twitter?

+0

...如果您使用的是客戶端庫,其中一個,因爲你已經標記這個問題與多個 –

+0

我嘗試了Windows Phone的tweetsharp。並且還發布了oauth流的twitterizer併發布推文。感謝您的回覆:) –

+0

您試過什麼代碼? –

回答

9

我已經使用Hammock.WindowsPhone.Mango庫爲此制定瞭解決方案。 (TweetSharp內部使用吊牀庫的OAuth和其他功能,但我從來沒有使用TweetSharp或Twitterizer)

我從Nuget

安裝最新版本的吊牀,然後用於照片上傳下面的代碼到Twitter:

public void uploadPhoto(Stream photoStream, string photoName) 
{ 
var credentials = new OAuthCredentials 
     { 
      Type = OAuthType.ProtectedResource, 
      SignatureMethod = OAuthSignatureMethod.HmacSha1, 
      ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader, 
      ConsumerKey = TwitterSettings.consumerKey, 
      ConsumerSecret = TwitterSettings.consumerKeySecret, 
      Token = TwitterSettings.accessToken, 
      TokenSecret = TwitterSettings.accessTokenSecret, 
      Version = "1.0a" 
     }; 


     RestClient restClient = new RestClient 
     { 
      Authority = "https://upload.twitter.com", 
      HasElevatedPermissions = true, 
      Credentials = credentials, 
      Method = WebMethod.Post 
     }; 
     RestRequest restRequest = new RestRequest 
     { 
      Path = "1/statuses/update_with_media.json" 
     }; 

     restRequest.AddParameter("status", tbxNewTweet.Text); 
     restRequest.AddFile("media[]", photoName, photoStream, "image/jpg"); 

} 

    restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback)); 
} 


private void PostTweetRequestCallback(RestRequest request, Hammock.RestResponse response, object obj) 
{ 
     if (response.StatusCode == System.Net.HttpStatusCode.OK) 
     { 
     //Success code 
     } 
} 

這裏, photoName距離PhotoChooserTask

012選擇( 「e.OriginalFileName」) 照片媒體是 「e.ChosenPhoto」 的圖像的名稱

和.AddFile的第四個參數()應該被照顧(同時做這個示例中,我還沒有考慮其他格式,你必須要在自己的應用護理)

我希望這有助於!

+0

MediaUpdateUrl應該是「https://upload.twitter.com/1/statuses/update_with_media.json」嗎? – loyalpenguin

+0

@loyalpenguin對不起,編輯我的代碼。它的「https://upload.twitter.com」 – nkchandra

+0

好吧,我改變了這一切,似乎順利,但當我得到響應回來,我得到一個「未經授權」的消息。任何想法,爲什麼我可能會得到這個?我傳遞了一個有效的令牌和令牌密碼。 – loyalpenguin

0

LINQ到Twitter支持WP7和具有TweetWithMedia方法是這樣的:

private void PostButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (string.IsNullOrWhiteSpace(TweetTextBox.Text)) 
      MessageBox.Show("Please enter text to tweet."); 

     ITwitterAuthorizer auth = SharedState.Authorizer; 
     if (auth == null || !auth.IsAuthorized) 
     { 
      NavigationService.Navigate(new Uri("/OAuth.xaml", UriKind.Relative)); 
     } 
     else 
     { 
      var twitterCtx = new TwitterContext(auth); 

      var media = GetMedia(); 

      twitterCtx.TweetWithMedia(
       TweetTextBox.Text, false, StatusExtensions.NoCoordinate, StatusExtensions.NoCoordinate, null, false, 
       media, 
       updateResp => Dispatcher.BeginInvoke(() => 
       { 
        HandleResponse(updateResp); 
       })); 
     } 
    } 

+0

如何在應用程序運行之間預先保存SharedState.Authorizer,以便每次運行應用程序時都無需授權? –

+0

@IgorKulman,您可以保存證書而不是授權人。更多信息在這裏:http://linqtotwitter.codeplex.com/discussions/362342。 –

相關問題