Смысл входа в систему 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, вы можете получить поведение, которое вы ищете.
person
dtuckernet
schedule
07.08.2011