C# 将图像直接上传到twitter

C# 将图像直接上传到twitter,c#,windows-phone-7,twitter,C#,Windows Phone 7,Twitter,我需要在WindowsPhone7中将图片直接上传到twitter上的帮助 我已经完成了twitter的oauth流,也可以更新推文,但我无法使用wp7将图像上传到twitter?我已经找到了一个解决方案,使用Hammock.WindowsPhone.Mango库。 (TweetSharp内部使用吊床库实现oAuth和其他功能,但我从未使用TweetSharp或Twitterizer) 我已从安装了最新版本的吊床 然后使用以下代码将照片上传到Twitter: public void upload

我需要在WindowsPhone7中将图片直接上传到twitter上的帮助


我已经完成了twitter的oauth流,也可以更新推文,但我无法使用wp7将图像上传到twitter?

我已经找到了一个解决方案,使用Hammock.WindowsPhone.Mango库。 (TweetSharp内部使用吊床库实现oAuth和其他功能,但我从未使用TweetSharp或Twitterizer)

我已从安装了最新版本的吊床

然后使用以下代码将照片上传到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是PhotoChoserTask中的“e.ChosenPhoto”

.AddFile()的第四个参数应该注意(我在做这个示例时没有考虑其他格式,您必须在应用程序中注意)


我希望这有帮助

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

Joe

…如果您使用的是客户端库,请选择哪一个,因为您已将此问题标记为多个客户端库,我尝试了针对windows phone的tweetsharp。还有用于oauth流和发布推文的推文器。感谢您的回复:)您尝试了哪种代码?通过tweetsharp,我只能上传图片2 twitpic.com,但无法在twitter上发布。twitterizer没有将图像直接上传到twitter的规定。@RowlandShaw我已经尝试了这两种方法,Gokoulane是正确的。除了TweetSharp中的twitpic支持外,这两个库都不支持将图像上传到twitter。当然,与IOS和Android相比,WP7开发人员通常是最后一批支持这些API的开发人员或示例。MediaUpdateUrl应该是“”?好的,我改变了这一点,一切看起来都很顺利,但当我得到回复时,我收到了一条“未经授权”的消息。知道我为什么会得到这个吗?我正在传递一个有效的令牌和令牌secret.code。代码对我来说工作正常,所以我的第一个猜测是,您是否在传递有效令牌?正如您所确定的,我的下一个想法是您是否正在使用最新版本的吊床库?我确实使用吊床来获取代币。虽然我正在经历它,但我没有看到任何问题。我得检查一下是否有最新版本的吊床。顺便问一下,在请求apI密钥时,我的应用程序的读/写权限是否足够?我注意到,当我登录twitter时,它没有说任何关于代表我上传媒体的内容。读/写权限就足够了。如果你能够发布一个正常状态,那么你也可以上传图像。此外,请尝试将“表单数据”字符串作为AddFile()中的第5个参数传递。如何在应用程序运行之间显示SharedState.Authorizer,以便无需每次运行应用程序时都进行授权?@IgorKulman,您可以保存凭据而不是授权者。更多信息请点击此处:。