У меня было SA_OAuthTwitterEngine
, казалось бы, нормально работало в моем приложении для iOS, но пару месяцев назад оно перестало работать (РЕДАКТИРОВАТЬ: не работает в iOS 4 или iOS 5, и код не изменился в приложении до неисправности),Это аутентификация и хранение кредитов в порядке, и передача их в мою службу базы данных просто отлично.Когда я пытаюсь опубликовать твит, все логируется нормально, как будто проходит правильный процесс.Все токены и имена пользователей и т. Д. Передаются корректно.Тем не менее, я не вижу сообщений в Twitter.Я использую отметку даты в сообщении и пробовал это на двух разных учетных записях пользователей, не видя ни одного сообщения ни от одной учетной записи.Интересно, что обратные вызовы MGTwitterEngineDelegate
(requestSucceeded:
и requestFailed:
) не вызываются.Я установил точки останова в MGTwitterEngine connection:didReceiveResponse:
, connection:didReceiveData:
и connection:didFailWithError:
, чтобы посмотреть, была ли это просто проблема с назначением делегата, но эти точки останова не были достигнуты, так что приложение, похоже, не получает ответа от Twitter, несмотря на тоЯ могу регистрировать идентификатор соединения, возвращаемый из метода sendUpdate: движка каждый раз.Если я смогу заставить делегата получить ответ соединения, возможно, я увижу ошибку.Так вот что я весь день колотил головой.Любая помощь будет оценена.
Код здесь:
- (void)postTweetToTwitter
{
if (![[NSUserDefaults standardUserDefaults] objectForKey:TWITTER_USER]) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"ShowSettings" object:nil];
return; //Makes sure user data is stored in NSUserDefaults before continuing, if not, settings will prompt for authentication
}
NSString *formattedDateString = [NSDateFormatter localizedStringFromDate:[NSDate date] dateStyle:kCFDateFormatterShortStyle timeStyle:kCFDateFormatterNoStyle];
NSString *tweetMessage = [NSString stringWithFormat:@"%@: Tweet message goes here.", formattedDateString];
if(!_engine){
_engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self];
_engine.consumerKey = kOAuthConsumerKey;
_engine.consumerSecret = kOAuthConsumerSecret;
}
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];
if (controller)
[self presentModalViewController: controller animated: YES];
else {
NSString *twitterConnectionIdentifier = [_engine sendUpdate:[NSString stringWithString:tweetMessage]];
NSLog(@"Twitter Connection Identifier : %@", twitterConnectionIdentifier);
}
}
- (NSString *) cachedTwitterOAuthDataForUsername: (NSString *) username {
NSString *authData = [[NSUserDefaults standardUserDefaults] objectForKey:TWITTER_USER];
if (authData) {
return authData;
} else return [NSString stringWithString:@"No Twitter Data"];
//This just won't do anything, but we avoid this case in the first if statement above.
}