MGTwitterEngine для iOS: как получить accessToken? Ошибка 401 - PullRequest
1 голос
/ 15 марта 2012

Я использую библиотеку MGTwitterEngine для своего приложения iOS для публикации твитов.

NSString *username = dataBase.twiLog;
NSString *password = dataBase.twiPas;                    

NSString *consumerKey = cons_key;
NSString *consumerSecret = cons_secret;

// 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.
MGTwitterEngine *twitterEngine = [[MGTwitterEngine alloc] initWithDelegate:self];
twitterEngine setClearsCookies:YES];                        
[twitterEngine setUsesSecureConnection:NO];
[twitterEngine setConsumerKey:consumerKey secret:consumerSecret];

[twitterEngine setUsername:username password:password];
[twitterEngine sendUpdate: @"This message was sent via myApp for iOS"];

Однако я не могу отправить твит, пока не получу accessToken. Вот вывод:

Request failed for connectionIdentifier = 5E7C9D2E-1467-45EF-B748-CCBF8F211F8D, error = The operation couldn’t be completed. (HTTP error 401.) ({
    body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n  <error>Could not authenticate you.</error>\n  <request>/1/statuses/update.xml</request>\n</hash>\n";
    response = "<NSHTTPURLResponse: 0x6e26a10>";
})

Как я могу отправить твит с помощью MGTwitterEngine? (без получения моего токена доступа от dev.twitter.com, потому что другие пользователи также могут отправлять твиты от себя)

1 Ответ

0 голосов
/ 15 марта 2012

У меня была похожая проблема, и после многих часов поиска я нашел решение. Моя кнопка выхода отображается только тогда, когда пользователь вошел в систему, проверив, авторизован ли движок. Затем, после того как пользователь нажмет на кнопку, это код, который выполняется.

- (void)logoutTwitter {

if(![_engine isAuthorized]){  
    UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine:_engine delegate:self];  

    if (controller){  
        [self presentModalViewController: controller animated: YES];  
    } 
} else {
    [_engine clearAccessToken]; //This is a method called from SA_OAuthTwitterEngine.h

}

...