我在我的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)
无法找出错误,是在Facebook中创建应用程序还是在iPhone编码中出现身份验证错误。如果有人收到错误,请帮我澄清
答案 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路径,编译器就不会抱怨。