Смысл входа в систему oAuth заключается в том, что это не происходит в вашем приложении. Он использует быстрое переключение приложений для выполнения аутентификации в доверенной среде (Safari или приложение Facebook).
Однако вы можете изменить Facebook.m для выполнения аутентификации в вашем приложении, но учетные данные вашего пользователя не будут запомнены. Вы можете видеть, что если ваше устройство iOS не поддерживает многозадачность, появится диалоговое окно резервного копирования.
Выдержка из Facebook.m (около строки 160):
if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) {
if (tryFBAppAuth) {
NSString *scheme = kFBAppAuthURLScheme;
if (_localAppId) {
scheme = [scheme stringByAppendingString:@"2"];
}
NSString *urlPrefix = [NSString stringWithFormat:@"%@://%@", scheme, kFBAppAuthURLPath];
NSString *fbAppUrl = [FBRequest serializeURL:urlPrefix params:params];
didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
}
if (trySafariAuth && !didOpenOtherApp) {
NSString *nextUrl = [self getOwnBaseUrl];
[params setValue:nextUrl forKey:@"redirect_uri"];
NSString *fbAppUrl = [FBRequest serializeURL:loginDialogURL params:params];
didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
}
}
// If single sign-on failed, open an inline login dialog. This will require the user to
// enter his or her credentials
if (!didOpenOtherApp) {
[_loginDialog release];
_loginDialog = [[FBLoginDialog alloc] initWithURL:loginDialogURL
loginParams:params
delegate:self];
[_loginDialog show];
}
Если вы удалите первое условное выражение, содержащее код и установив для didOpenOtherApp значение NO, вы можете получить искомое поведение.