Ответ "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);

Это все еще не решит вашу проблему полностью, и вот почему:

  1. Поскольку вы не ожидали асинхронной операции, вы вернули Task.
  2. Вы не знали этого, потому что твит это вар. Я обновлю свой демонстрационный код, чтобы использовать Status, чтобы люди увидели ошибку компилятора, если они будут использовать мой пример.
  3. Когда вы смотрели твит, вы просматривали Task.Status, который был TaskStatus.Faults.
  4. TaskStatus.Faults происходит из-за необработанного исключения.
  5. Весьма вероятно, что вы получили необработанное исключение из-за ошибки аутентификации - 401 Unauthorized.
  6. Я написал FAQ с обширным списком причин возникновения 401 исключений и элементов для проверки причин: LINQ to Twitter FAQ.
  7. Вы должны обернуть код в блок try/catch, ища исключение TwitterQueryException, которое будет содержать более подробную информацию, включая текст ошибки, возвращаемый из API Twitter.

Благодаря ответу Джо я смог копать дальше в свой.

Используя предложенный им код и поймав исключение, я смог уловить эту ошибку:

Could not load file or assembly ‘System.Net.Http.Primitives, Version=1.5.0.0

Я перезапустил нюгет для Microsoft.Net.Http, и программа ожила.

Библиотека была установлена, НО она не была правильно добавлена ​​в файл конфигурации.

Другие вопросы по тегам