#asp.net-mvc #linq-to-twitter
#asp.net-mvc #linq-to-twitter
Вопрос:
вот что мы намеревались сделать:
- Создайте приложение MVC, в котором пользователь нажимает кнопку и переходит на страницу входа в Twitter
- После предоставления учетных данных пользователь перенаправляется на вторую страницу
- На второй странице есть текстовое поле и кнопка «Твитнуть»
- Ввод сообщения и нажатие на «Твит» обновит статус
Я добрался до 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. Спасибо, Джо. Ценю вашу помощь.