Ответ "Failed" при отправке твита с использованием linqtotwitter
Я пытаюсь отправить простое обновление статуса (твит) с помощью linq в твиттер. Я могу подключиться нормально, но когда я отправляю твит, я получаю статус возврата "отказал", используя следующий код.
public async Task Tweet(string text)
{
var auth = GetCredentials();
await auth.AuthorizeAsync();
var ctx = new TwitterContext(auth);
var tweet = ctx.TweetAsync(text);
if (tweet != null)
Console.WriteLine(tweet.Status);
}
Мой метод GetCredentials выглядит следующим образом:
private static SingleUserAuthorizer GetCredentials()
{
return new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore()
{
ConsumerKey = ####,
ConsumerSecret = ####,
AccessToken = ####,
AccessTokenSecret = ####,
}
};
}
Для подтверждения я создал приложение в твиттере. Учетные данные верны (или, по крайней мере, скопированы и вставлены из твиттера), и у меня есть полные права на отправку сообщений в соответствующую учетную запись.
2 ответа
Вам следует дождаться TweetAsync, вот так:
Status tweet = await ctx.TweetAsync(text);
Это все еще не решит вашу проблему полностью, и вот почему:
- Поскольку вы не ожидали асинхронной операции, вы вернули Task.
- Вы не знали этого, потому что твит это вар. Я обновлю свой демонстрационный код, чтобы использовать Status, чтобы люди увидели ошибку компилятора, если они будут использовать мой пример.
- Когда вы смотрели твит, вы просматривали Task.Status, который был TaskStatus.Faults.
- TaskStatus.Faults происходит из-за необработанного исключения.
- Весьма вероятно, что вы получили необработанное исключение из-за ошибки аутентификации - 401 Unauthorized.
- Я написал FAQ с обширным списком причин возникновения 401 исключений и элементов для проверки причин: LINQ to Twitter FAQ.
- Вы должны обернуть код в блок try/catch, ища исключение TwitterQueryException, которое будет содержать более подробную информацию, включая текст ошибки, возвращаемый из API Twitter.
Благодаря ответу Джо я смог копать дальше в свой.
Используя предложенный им код и поймав исключение, я смог уловить эту ошибку:
Could not load file or assembly ‘System.Net.Http.Primitives, Version=1.5.0.0
Я перезапустил нюгет для Microsoft.Net.Http, и программа ожила.
Библиотека была установлена, НО она не была правильно добавлена в файл конфигурации.