Изначально мне нужна была возможность использовать API поиска с твиттером. Я сделал это, используя замечательный MGTwitterEngine Мэтта Джеммелла . Этот код был очень очень простым и выглядел примерно так:
- (void)viewDidLoad {
[super viewDidLoad];
tweetArrays = nil;
tweetNameArray = nil;
NSString *username = @"<username>";
NSString *password = @"<password>";
NSString *consumerKey = @"<consumerKey>";
NSString *consumerSecret = @"<consumerSecret>";
// Most API calls require a name and password to be set...
if (! username || ! password || !consumerKey || !consumerSecret) {
NSLog(@"You forgot to specify your username/password/key/secret in AppController.m, things might not work!");
NSLog(@"And if things are mysteriously working without the username/password, it's because NSURLConnection is using a session cookie from another connection.");
}
// Create a TwitterEngine and set our login details.
twitterEngine = [[MGTwitterEngine alloc] initWithDelegate:self];
[twitterEngine setUsesSecureConnection:NO];
[twitterEngine setConsumerKey:consumerKey secret:consumerSecret];
// This has been undepreciated for the purposes of dealing with Lists.
// At present the list API calls require you to specify a user that owns the list.
[twitterEngine setUsername:username];
[twitterEngine getSearchResultsForQuery:@"#HelloWorld" sinceID:0 startingAtPage:1 count:100];
}
Это приведет к вызову функции:
- (void)searchResultsReceived:(NSArray *)searchResults forRequest:(NSString *)connectionIdentifier
И тогда я мог делать то, что хотел, с помощью searchResults. Это потребовало от меня включения библиотеки yajl.
Затем я захотел расширить свой код, чтобы позволить пользователям твитить. Я скачал замечательный код Бена Готтлиба Twitter-OAuth-iPhone
Так что есть только одна проблема. GetSearchResultsForQuery возвращает requestFailed со следующей ошибкой:
Error Domain=HTTP Code=400 "The operation couldn’t be completed. (HTTP error 400.)"
Чтобы вызвать этот код, я просто взял демонстрационный проект в Twitter-OAuth-iPhone и добавил вызов getSearchResultsForQuery, как показано здесь:
- (void) viewDidAppear: (BOOL)animated {
if (_engine) return;
_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 {
[_engine getSearchResultsForQuery:@"HelloWorld"];
// [_engine sendUpdate: [NSString stringWithFormat: @"Already Updated. %@", [NSDate date]]];
}
}
Это, как указано выше, возвращает ошибку 400. Все остальные вызовы Twitter API, которые я здесь добавляю, работают так:
- (NSString *)getRepliesStartingAtPage:(int)pageNum;
Я что-то не так делаю? Или getSearchResultsForQuery больше не работает? Кажется, две базы кода используют разные версии MGTwitterEngine, может ли это быть причиной проблемы?
Спасибо!