Обновление статуса Twitter с помощью LinqToTwitter

#asp.net-mvc #linq-to-twitter

#asp.net-mvc #linq-to-twitter

Вопрос:

вот что мы намеревались сделать:

  1. Создайте приложение MVC, в котором пользователь нажимает кнопку и переходит на страницу входа в Twitter
  2. После предоставления учетных данных пользователь перенаправляется на вторую страницу
  3. На второй странице есть текстовое поле и кнопка «Твитнуть»
  4. Ввод сообщения и нажатие на «Твит» обновит статус

Я добрался до 2-го пункта, следуя примерам со страницы LinqToTwitter codeplex.

Код из контроллера OAuth работает нормально и перенаправляет обратно на вторую страницу приложения MVC.

Но я что-то упускаю, что не публикует статус.

Это код при нажатии кнопки, с помощью которого я передаю введенный пользователем статус:

 public ActionResult Status(string status)
    {
        var auth = new MvcAuthorizer
        {
            CredentialStore = new SessionStateCredentialStore()
        };

        auth.CompleteAuthorizeAsync(Request.Url);

        var twitterContext = new TwitterContext(auth);

        TweetAsync(twitterContext, status);

        return View(); //return some view to the user
    }

    void TweetAsync(TwitterContext twitterCtx, string statusToUpdate)
    {
        var tweet =  twitterCtx.TweetAsync(statusToUpdate);

        if (tweet != null)
        {
          // Inform the user about success
        }
     } 
  

Оба вышеуказанных метода также находятся в контроллере OAuth.

Может кто-нибудь, пожалуйста, помочь мне с этим?

Заранее спасибо.

Ответ №1:

Измените свой метод на использование асинхронности и верните задачу:

статус публичной асинхронной задачи (статус строки) { //…

     var tweet = await twitterContext.TweetAsync(twitterContext, status);

    // ...
}
  

а затем ожидает TweetAsync, присваивая ответ объекту статуса с именем tweet. Если вам нужен отдельный метод для вызова TweetAsync, сделайте его также асинхронным. С помощью async вы должны сделать все методы в цепочке вызовов асинхронными.

Комментарии:

1. Хорошо, попробуем это, не могли бы вы сказать мне, почему я не получаю заголовок ‘Access-Control-Allow-Origin’, присутствующий на запрошенном ресурсе. Следовательно, доступ к исходному ‘ localhost: port ‘ запрещен.

2. Я вижу это в FF devtools, XMLHttpRequest не может загрузиться api.twitter.com/oauth /… . На запрошенном ресурсе отсутствует заголовок ‘Access-Control-Allow-Origin’. Следовательно, доступ к источнику ‘ localhost: 32950 ‘ запрещен.

3. Убедитесь, что вы не используете сеанс InProc — всегда ошибка, потому что сеанс повторяется. Вы можете попытаться заставить образец приложения работать — вы можете найти это в загружаемом исходном коде. Это поможет устранить любые основные проблемы с коммуникациями. У меня есть некоторая документация, которая объясняет oauth более подробно: linqtotwitter.codeplex.com/… У меня также есть часто задаваемые вопросы, которые помогают решить проблемы с OAuth 401: linqtotwitter.codeplex.com /…

4. Спасибо, Джо. Ценю вашу помощь.