0

私は、ユーザーが自分の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));
}
4

3 に答える 3

0

あなたの質問に答えることはできませんが、API twitter api 1.0を使用している場合は、今すぐapi1.1に移行してください。彼らは来月API1.0を廃止する予定です:https ://dev.twitter.com/blog/planning-for-api-v1-retirement 。JSONを除くすべてを閉じているため、コードがまったく機能しなくなる可能性があることに注意してください。

于 2013-02-26T10:37:59.957 に答える
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,
        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 
    };

そして最後に、1 つのことを確認する必要があります。https://apps.twitter.com/のアプリケーション設定

アクセス レベルをRead, write, and direct messages (modify app permissions)

アクセス許可を変更できない場合は、モバイルから試してください。モバイルからこの URL にアクセスし、ユーザー名とパスワードでログインします。これで、モバイルから設定を変更できます。今、あなたはあなたのつぶやきを投稿することができます.. !!

于 2014-09-20T10:27:11.567 に答える
0

コードの最後の行ではなく、このコードを試してください

    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));
于 2013-02-26T09:58:59.523 に答える