Проблема, когда пользователь "отменяет доступ" для приложения, когда я использую платформу Twitter
Я использовал фреймворк Twitter, предоставленный самим Twitter, для реализации функциональности "Войти через Twitter".
Согласно их документации, он использует учетную запись Twitter системы iOS (учетную запись, которая была настроена пользователем в приложении настроек iOS). Он работает нормально, например, если пользователь настроил учетную запись в настройках, то он не будет запрашивать учетные данные. Если пользователь не настроил учетную запись в настройках, то будет отображаться экран входа в систему. У меня нет проблем с этим, что касается потока и моего требования.
Но если пользователь заходит в свою учетную запись Twitter и аннулирует доступ к этому приложению, тогда мне это не подходит. Я все еще могу получить информацию о пользователе, используя метод Twitter. Я пропускаю что-то, что могло быть предоставлено Твиттером?
Вот мой фрагмент кода. При успешном входе я позвонил usersShow
метод. В этом методе я могу получать пользовательские данные, даже если пользователь отзывает разрешение для приложения из учетной записи Twitter (с сайта). Если пользователь не дал разрешения на приложение, то должно быть что-то другое, что я должен получить. Возможно, я что-то упустил.
#pragma mark
#pragma mark - Twitter framework
- (IBAction)btnTwitterLogin_pressed:(id)sender
{
[[Twitter sharedInstance] logInWithCompletion:^
(TWTRSession *session, NSError *error) {
if (session)
{
// This session is then used to make Twitter API requests.
NSLog(@"%@", [session userID]);
NSLog(@"%@", [session userName]);
NSLog(@"%@", [session authToken]);
NSLog(@"%@", [session authTokenSecret]);
[self usersShow:[session userID]];
//[self getUserWithUserID:[session userID]];
}
else
{
NSLog(@"Error: %@", [error localizedDescription]);
}
}];
}
-(void)usersShow:(NSString *)userID
{
NSString *statusesShowEndpoint = kURLTwitterUserInfo;
NSDictionary *params = @{@"user_id": userID};
NSError *clientError;
NSURLRequest *request = [[[Twitter sharedInstance] APIClient]
URLRequestWithMethod:@"GET"
URL:statusesShowEndpoint
parameters:params
error:&clientError];
if (request) {
[[[Twitter sharedInstance] APIClient]
sendTwitterRequest:request
completion:^(NSURLResponse *response,
NSData *data,
NSError *connectionError) {
if (data) {
// handle the response data e.g.
NSError *jsonError;
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data
options:0
error:&jsonError];
NSLog(@"%@",[json description]);
// I am being able to get user data here...
}
else {
NSLog(@"Error code: %ld | Error description: %@", (long)[connectionError code], [connectionError localizedDescription]);
}
}];
}
else {
NSLog(@"Error: %@", clientError);
}
}
-(IBAction)btnTwitterLogout_pressed:(id)sender
{
[[Twitter sharedInstance] logOut];
}