Windows phone 7: как опубликовать твит в твиттере

В настоящее время я работаю над совместным использованием функций Windows Phone.

Моя цель - поделиться статусом пользователя с Facebook и Twitter из моего приложения для Windows Phone.

Я успешно завершил обмен в Facebook и теперь пытаюсь поделиться статусом (только твит из 120 слов) в Twitter.

Я завершил аутентификацию с помощью учетной записи Twitter, используя это.

Когда я пытаюсь опубликовать твит в учетной записи 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 и получил ключи токена доступа, прежде чем сделать этот звонок.


person Nikhil Prajapati    schedule 05.03.2014    source источник
comment
Привет @Nikhil Prajapati.. Как вы решаете свою проблему. Я также изо всех сил пытаюсь получить данные пользователя из твиттера. Можете ли вы помочь мне решить мою проблему? мой вопрос .. Вам нужна помощь.   -  person Vijay    schedule 13.09.2014
comment
Привет @Vijay .. Вы пробовали в эмуляторе или на устройстве?   -  person Nikhil Prajapati    schedule 15.09.2014
comment
Только эмулятор. У меня нет устройства. Теперь он отлично работает в эмуляторе. Есть ли проблема, когда мы запускаем устройство ??   -  person Vijay    schedule 15.09.2014
comment
да .. Вы также должны проверить синхронизацию устройства. Поскольку API Twitter работает с датой и временем устройства. если дата и время устройства не установлены на точное время с регионом, это вызовет ошибку, например «Не удалось проверить подпись и токен oAuth».   -  person Nikhil Prajapati    schedule 15.09.2014
comment
потому что я получил эту проблему удивительно. и когда я устанавливаю точное время, все работает нормально. в то время я был шокирован тем, что он работает с таймингами моего устройства и показывает ошибку, как недействительный OAuth. вы не можете ожидать такого рода мелких ошибок, когда ошибка произошла именно так. Надеюсь, вы понимаете, что я хочу сказать. Спасибо   -  person Nikhil Prajapati    schedule 15.09.2014
comment
О.. Спасибо, Нихил, за ценную информацию..!!   -  person Vijay    schedule 15.09.2014


Ответы (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"

Теперь ваш код будет работать без сбоев, наслаждайтесь днем.

person Sidhdharajsinh Sodha    schedule 05.03.2014
comment
Спасибо за ответ. но это будет работать только в эмуляторе. но не в виндовс телефоне. когда я попытаюсь реализовать на своем устройстве, это вызовет ошибку, например «Не удалось проверить подпись и токен oAuth». Итак, как я могу это решить. пожалуйста, помогите мне. - person Nikhil Prajapati; 05.03.2014