我跟着this guide,我已经成功创建了我的应用程序与Facebook集成。FaceBook API,登录应用程序内
什么问题?
当用户需要做的登录,应用程序在浏览器中退出(或Facebook的应用程序,如果已安装的)
如何在应用程序内完全保持认证?
我跟着this guide,我已经成功创建了我的应用程序与Facebook集成。FaceBook API,登录应用程序内
什么问题?
当用户需要做的登录,应用程序在浏览器中退出(或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,你可以得到你正在寻找的行为。
要禁用此行为,请修改Facebook.m第275行并将两个选项都设置为NO。
- (void)authorize:(NSArray *)permissions {
self.permissions = permissions;
// with both options NO, authorization always happens in-app
[self authorizeWithFBAppAuth:NO safariAuth:NO];
}
谢谢!!!真的:) – JAA
这比这更简单一些(虽然事情在你回答时可能会有所不同)。 – bentford