我关注了this guide我已经通过 Facebook 集成成功创建了我的应用程序。
有什么问题?
当用户必须登录时,应用程序在浏览器中退出(或在 Facebook 应用程序中,如果已安装)
如何将身份验证完全保留在应用内?
最佳答案
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,您可以获得您正在寻找的行为。
关于ios - FaceBook API,应用内登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969680/