5

I need help in uploading images directly to twitter in Windows Phone 7.

I am done with oauth flow of twitter and can also could update tweets but I have not been able to upload image to twitter using wp7?

4

2 に答える 2

9

Hammock.WindowsPhone.Mango ライブラリを使用して、これに対する解決策を考え出しました。(TweetSharp は内部で oAuth やその他の機能に Hammock ライブラリを使用していますが、TweetSharp や Twitterizer を使用したことはありません)

Nugetから Hammock の最新バージョンをインストールしました

そして、次のコードは、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 は選択された画像の名前 (「e.OriginalFileName」) です。photoStream は PhotoChooserTask からの「e.ChosenPhoto」です。

.AddFile() の 4 番目のパラメーターに注意する必要があります (このサンプルを実行している間、他の形式は考慮していません。アプリで注意する必要があります)。

これが役立つことを願っています!!

于 2012-06-06T11:09:59.027 に答える
0

LINQ to 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);
                }));
        }
    }

ジョー

于 2012-06-13T22:50:15.537 に答える