FBAppCall从Facebook更新4.x中删除 - 在Facebook登录后返回应用程序

Smi*_*key 5 facebook objective-c ios facebook-login bolts-framework

自Facebook 4.x更新后,以下内容不再有效:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [FBAppCall handleOpenURL:url sourceApplication:@"yyyyxxxxyyyxxxx" withSession:[PFFacebookUtils session]];
}
Run Code Online (Sandbox Code Playgroud)

因为两者application: handleOpenURL都已被弃用,并且FBAppCall已被删除以替换为BFURL.

我试过阅读Bolts文档,其中提出了以下建议:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

    BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication];

//do something with parsedUrl if neccessary
Run Code Online (Sandbox Code Playgroud)

...但是我不知道如何处理BFURL.以前,这种方法只包含:

return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];
    }
Run Code Online (Sandbox Code Playgroud)

但现在每次我尝试登录FB(没有安装FB应用程序),它退出到Safari,批准应用程序,返回我的应用程序,但重新启动它,并且无法登录.经过大约4次连续尝试,它有时会登录.我认为这是因为我没有正确处理返回应用程序,但不知道要添加什么.

Min*_* Li 0

如果您使用 FBSDKLoginManager,那么对于 loginInWith*Permissions 方法,您也可以指定一个处理程序。该处理程序是您的应用程序再次启动时的回调(将您曾经在 FBAppCall 的登录回调中使用的任何逻辑放入此处理程序中)。

然后,将您的应用程序委托类连接到 FBSDKApplicationDelegate,如入门指南中所述。这将告诉 SDK 调用您的处理程序。

请在此处阅读有关 iOS 登录的更多信息。