ios - FaceBook API,应用内登录

标签 ios facebook facebook-graph-api facebook-ios-sdk

我关注了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/

相关文章:

ios - UI 不显示初始化程序的值

ios - MSMessageLayout 在 iMessage 应用程序中没有成员标题

iphone - 与 AVAudioPlayer 同步播放 MPMoviePlayerController

ios - Facebook 应用程序邀请 iOS SDK v4.1 应用程序在单击邀请按钮时崩溃

facebook - 向 Facebook 查询正在使用/可以使用的 Graph API 版本

iphone - 在 iphone 中如何获取 Sqlite 最后插入的行 ID?

html - 将一个类似 facebook 的按钮居中,使用 CSS/HTML 改变大小

python - Flask - 函数映射正在覆盖现有端点函数

facebook - 通过Id获取用户头像

asp.net - Facebook 页面上的帖子