5

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

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

因为两者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

...但是我不确定如何处理 BFURL。以前,此方法仅包含:

return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];
    }

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

4

2 回答 2

4

用这个替换旧的回报:

return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationLaunchOptionsSourceApplicationKey] annotation:options[UIApplicationLaunchOptionsAnnotationKey]];
于 2016-01-28T20:43:43.157 回答
0

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

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

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

于 2015-04-13T16:34:39.043 回答