【问题标题】:Twitter post in windows phoneWindows Phone 中的 Twitter 帖子
【发布时间】:2014-09-20 18:27:11
【问题描述】:

我正在开发一个应用程序,用户可以登录到他们的 Twitter 帐户并发布他们的状态。 一切都很顺利,但是当我点击推文按钮发布时,状态没有更新。

我的代码有什么问题?

private void btnPostTweet_Click(object sender, RoutedEventArgs e)
{
    if (txtBoxNewTweet.Text.Trim().Length == 0) { return; }

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

    var restClient = new RestClient
    {
        Authority = TwitterSettings.StatusUpdateUrl,
        HasElevatedPermissions = true,
        Credentials = credentials,
        Method = WebMethod.Post
    };

    restClient.AddHeader("Content-Type", "application/x-www-form-urlencoded");

    // Create a Rest Request and fire it
    var restRequest = new RestRequest
    {
        Path = "1/statuses/update.xml?status=" + txtBoxNewTweet.Text 
    };

    var ByteData = Encoding.UTF8.GetBytes(txtBoxNewTweet.Text);
    restRequest.AddPostContent(ByteData);
    restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback));
}

【问题讨论】:

    标签: windows-phone-7 twitter


    【解决方案1】:

    试试这段代码,而不是代码的最后几行

        restRequest = new RestRequest
        {
            Path = "1/statuses/update.xml"
        };
        restRequest.AddParameter("status", tbxNewTweet.Text);
    
        //var ByteData = Encoding.UTF8.GetBytes(txtBoxNewTweet.Text);
        //restRequest.AddPostContent(ByteData);
        restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback));
    

    【讨论】:

      【解决方案2】:

      我无法回答您的问题,但如果您使用 API twitter api 1.0,请立即移至 api 1.1。他们将在下个月停用 api 1.0:https://dev.twitter.com/blog/planning-for-api-v1-retirement。 请注意,他们正在关闭除 JSON 之外的所有内容,因此您的代码可能随时停止工作。

      【讨论】:

        【解决方案3】:

        嗨,你找到答案了吗?如果没有,请尝试:

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

        这里删除Version = "1.0"

        所以它看起来像这样:

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

        然后改变路径:

        var restRequest = new RestRequest
            {
                Path = "1.1/statuses/update.xml?status=" + txtBoxNewTweet.Text 
            };
        

        最后你必须检查一件事。 https://apps.twitter.com/中的应用程序设置

        将访问级别更改为Read, write, and direct messages (modify app permissions)

        如果您无法更改权限,请从您的手机尝试。从您的手机转到此网址并使用您的用户名和密码登录。现在您可以从移动设备更改设置。现在你可以发布你的推特了..!!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-19
          • 1970-01-01
          • 2013-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多