【问题标题】:Windows phone 7: how to post tweet to twitterWindows Phone 7:如何在 Twitter 上发布推文
【发布时间】:2014-04-07 00:11:21
【问题描述】:

目前我正在开发 Windows Phone 的共享功能。

我的目的是通过我的 windows phone 应用程序将用户的状态分享到 Facebook 和 Twitter。

我已成功完成 Facebook 分享,现在我正在尝试将状态(仅限 120 字推文)分享到 twitter。

我使用 this 完成了 Twitter 帐户的身份验证。

当我使用此推文按钮单击事件登录帐户后尝试将推文发布到推特帐户时,

 private void btnPostTweet_Click(object sender, RoutedEventArgs e)
    {
        var credentials = new OAuthCredentials
        {
            Type = OAuthType.ProtectedResource,
            SignatureMethod = OAuthSignatureMethod.HmacSha1,
            ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
            ConsumerKey = AppSettings.consumerKey,
            ConsumerSecret = AppSettings.consumerKeySecret,
            Token = this.accessToken,
            TokenSecret = this.accessTokenSecret,
            Version = "1.1"
        };

        var restClient = new RestClient
        {
            Authority = "https://api.twitter.com",
            HasElevatedPermissions = true
        };

        var restRequest = new RestRequest
        {
            Credentials = credentials,
            Path = "/1.1/statuses/update.json",
            Method = WebMethod.Post
        };

  restRequest.AddParameter("status", Uri.EscapeDataString(txtTweetContent.Text));

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

在回调中,

private void PostTweetRequestCallback(RestRequest request, RestResponse response, object obj)
    {
        string str = response.ToString();
        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {
                MessageBox.Show(AppSettings.TWEET_POSTED_SUCCESSFULLY);
            }
            else if (response.StatusCode == HttpStatusCode.Forbidden)
            {
                MessageBox.Show(AppSettings.TWEET_POST_ERR_UPDATE_LIMIT);
            }
            else
            {
                MessageBox.Show(AppSettings.TWEET_POST_ERR_FAILED);
            }
            txtTweetContent.Text = "";
        });
    }

它给了我错误

"Bad Authentication data", Code="215"

我已成功将我的应用程序注册到 twitter 开发者帐户并在进行此调用之前收到了访问令牌密钥。

【问题讨论】:

  • 嗨@Nikhil Prajapati ..你如何解决你的问题。我也在努力从 twitter 获取用户详细信息。你能帮我解决我的问题吗? my question .. 需要你的帮助。
  • 嗨@Vijay.. 你是在模拟器还是设备中试过?
  • 仅限模拟器。我没有设备。它现在在模拟器中运行良好。我们在设备中运行有什么问题吗??
  • 是的..您还必须检查设备计时。因为 twitter API 适用于设备的日期和时间。如果设备的日期和时间未设置为与区域的确切时间,则会导致类似“无法验证 oAuth 签名和令牌”的错误。
  • 因为我出人意料地遇到了这个问题。当我设置确切的时间区域时,它工作正常。当时我很震惊,它适用于我的设备计时,并显示错误,例如 not Valid OAuth。当错误发生时,你不能指望这种小错误。我希望你能明白我的意思。谢谢

标签: c# windows-phone-7 twitter rest-client


【解决方案1】:

从分析您的代码看来,您必须在以下代码块处进行更改:

var credentials = new OAuthCredentials
    {
        Type = OAuthType.ProtectedResource,
        SignatureMethod = OAuthSignatureMethod.HmacSha1,
        ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
        ConsumerKey = AppSettings.consumerKey,
        ConsumerSecret = AppSettings.consumerKeySecret,
        Token = this.accessToken,
        TokenSecret = this.accessTokenSecret,
        Version = "1.1"
    };

改变这个:

 Version = "1.1" to Version="1.0"

现在您的代码将顺利运行,享受这一天。

【讨论】:

  • 感谢您的回复。但它只适用于模拟器。但不是在Windows手机中。当我尝试在我的设备中实现时,它会导致类似“无法验证 oAuth 签名和令牌”的错误。那么,我该如何解决它。请帮帮我。
猜你喜欢
  • 2011-09-13
  • 2020-03-05
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多