Facebook SDK问题

时间:2013-01-01 14:55:25

标签: ios objective-c facebook facebook-ios-sdk

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

- (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)

enter image description here enter image description here

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

3 个答案:

答案 0 :(得分:1)

编写测试项目,我无法重复您的错误消息;

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

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

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

  

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

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

答案 1 :(得分:0)

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

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

}

答案 2 :(得分:0)

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