LinqToTwitter генерирует исключение, когда я пытаюсь отправить личное сообщение

Я пытаюсь отправить личное сообщение подписчикам пользователя, который уже прошел аутентификацию с помощью my_app, вот код:

    var authent = new MvcAuthorizer
        {
            Credentials = new SessionStateCredentials()
            {
                ConsumerKey = this.client.ConsumerKey,
                ConsumerSecret = this.client.ConsumerSecret,
                OAuthToken = identity.Token.Token
            }
        };

        var twitterCtx = new TwitterContext(authent);
        list_friend.ToList().ForEach(x => twitterCtx.NewDirectMessage(x.InvitedFriendID, messageWithPlaceHolders.Replace("[FRIEND_NAME]", x.Name)));

list_friend — список подписчиков аутентифицированного пользователя.

Пожалуйста, мне нужна ваша помощь.


person ucef    schedule 13.06.2012    source источник
comment
Какое исключение в какой строке? Можете ли вы опубликовать сообщение об исключении и трассировку стека?   -  person nemesv    schedule 13.06.2012
comment
здесь есть исключение: Le serveur remote a retourné une erreur: (401) Non autorisé.   -  person ucef    schedule 13.06.2012
comment
и это тоже: Ошибка при запросе Twitter.. исключение генерируется последней инструкцией: list_friend.TOList() .......   -  person ucef    schedule 13.06.2012


Ответы (1)


решение состоит в том, чтобы использовать InMemoryCrendentials, а не SessionStateCredentials, и добавить секрет токена в учетные данные, а после того, как мы должны добавить DateTime.Now в сообщение, потому что Twitter не разрешает дублировать сообщения, вот код решения, которое работает хорошо:

  var authent = new MvcAuthorizer
        {
            Credentials = new InMemoryCredentials()
            {
                ConsumerKey = this.client.ConsumerKey,
                ConsumerSecret = this.client.ConsumerSecret,
                OAuthToken = identity.Token.Token,
                AccessToken = identity.Token.Secret
            }
        };
  var twitterCtx = new TwitterContext(authent);            
  list_friend.ToList().ForEach(x => twitterCtx.NewDirectMessage(x.SocialId, messageWithPlaceHolders.Replace("[FRIEND_NAME]", x.Name) +DateTime.Now.ToString()));

Спасибо

person ucef    schedule 18.06.2012