2

我在我的 iPhone 应用程序中创建了一个 facebook 身份验证,为此我遵循 了本教程。但是除了一行代码,就是

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [FBSession.activeSession handleDidBecomeActive];
}

当我使用它时,它是一个错误显示:

'FBSession' 没有可见的@interface 声明选择器 handleDidBecomeActive

但是当我单击登录按钮时,身份验证仍然可以正常工作,问题是我的身份验证窗口只显示“基本信息”-我还需要访问“代表您发布”

      My authentication window is             I need to authenticate 
              like this                    like this (as in FB tutorial)

在此处输入图像描述在此处输入图像描述

无法找出错误,是在 Facebook 中创建应用程序还是我在 iPhone 编码中的身份验证错误。如果有人得到错误,请帮助我澄清

4

3 回答 3

1

写一个测试项目,我不能重复你的错误信息;

No visible @interface for 'FBSession' declares the selector handleDidBecomeActive

使用 Facebook SDK 3.1.1 编译时(没有 3.1 方便测试)。这似乎与版本相关,因为它handleDidBecomeActive是 3.1 版本中的新内容,并且该消息与编译器没有看到选择器有关。

另外,关于您的许可问题;权限系统在 3.1 版本中已更改为不允许您同时请求读取和写入权限。引用自3.1 迁移文档

您现在需要单独(并按此顺序)请求阅读和发布权限。最有可能的是,当应用程序启动并且用户首次登录时,您将请求读取权限以进行个性化。稍后,如果合适,您的应用程序可以在打算将数据发布到 Facebook 时请求发布权限。

我可以在登录时请求读取权限(这就是您所看到的),但是正如您所看到的,您不能同时请求发布权限。如果我,正如 SDK 所暗示的那样,稍后请求该权限,它似乎可以正常工作。

于 2013-01-01T18:05:38.420 回答
0

我使用了您仅在 iOS 6 及更高版本中编写的代码。你应该试试这个代码:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if ([[[UIDevice currentDevice] systemVersion]integerValue] >= __IPHONE_6_0) {
        [FBSession.activeSession handleDidBecomeActive];
    }

}
于 2013-01-01T15:46:33.550 回答
0

我知道这是一篇旧帖子,但我发现这可能会帮助遇到同样问题的人,所以我在这里发布我的解决方案。我正在使用 FacebookSDK v3.1,今天遇到了同样的问题。这是因为我在目标搜索路径中仍然有较旧的 FacebookSDK v3.0 路径。只要确保在 Targets Search Paths 中输入了正确的 FacebookSDK 路径,编译器就不会报错。

于 2013-02-23T08:04:00.997 回答