FBSession 的 Facebook iOS SDK 3.0 登录教程问题

Posted

技术标签:

【中文标题】FBSession 的 Facebook iOS SDK 3.0 登录教程问题【英文标题】:Facebook iOS SDK 3.0 Login Tutorial Issue with FBSession 【发布时间】:2012-08-12 21:22:59 【问题描述】:

我目前正在尝试构建一个应用程序 - 其基础(希望)是基于 Facebook ios SDK 3.0 教程构建的。

我关注的教程位于:http://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/

我发现 Facebook 的各种 SDK 版本在最终版本中都有一些变化。

但是在代码编译之前我确实有最后一个问题:

"没有已知的选择器'sessionOpenWithPermissions:completionHandler:'的类方法"

这个错误是指以下代码:

- (void)openSession

    [FBSession sessionOpenWithPermissions:nil completionHandler:
     ^(FBSession *session, FBSessionState state, NSError *error) 
         [self sessionStateChanged:session state:state error:error];
     ];    

在 Xcode 中查看 FBSession.h 文件时,没有提到 sessionOpenWithPermissions

有人可以帮我解决这个问题吗?我是 Objective-C/Xcode 的新手,正在通过试炼学习。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,我的代码可以使用以下更改。

//REPLACE
[FBSession sessionOpenWithPermissions:nil
                    completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) 
                        [self sessionStateChanged:session state:state error:error];
                    ];

//WITH
[FBSession openActiveSessionWithPermissions:nil
                               allowLoginUI:YES
                          completionHandler:^(FBSession *session, FBSessionState state, NSError *error) 
                              [self sessionStateChanged:session state:state error:error];
                          ];

如果您 alt 单击该方法,您将获得有关要传递的参数的更多信息。 openActiveSessionWithPermissions options

【讨论】:

非常感谢你们的帮助。一个后续问题。您建议的代码更改有效 - 我在 Scrumptious 示例中找到了它,因为我知道我在寻找什么,但是当我单击应用程序主页上的登录按钮时出现错误。错误在 main.m 中以下代码的“return”语句中显示“线程 1:Signal SIGABRT”:#import #import "MMAppDelegate.h" int main(int argc, char *argv []) @autoreleasepool return UIApplicationMain(argc, argv, nil, NSStringFromClass([MMAppDelegate class])); 抱歉没有格式化,但我不知道如何在 cmets 中格式化代码块:S 也许检查链接到您的按钮的所有方法是否可用,在我玩弄之前我在代码中删除或重命名了 IBAction 但它仍然链接到 xib 中的按钮或发布您的完整代码。 openActiveSessionWithPermissions 已折旧。引用自 SDK 指南:如果您的应用以前使用 SDK 的 v3.0,则需要删除 openActiveSessionWithPermissions:allowLoginUI:completionHandler: 的使用并替换为 openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:(或者更简单,openActiveSessionWithAllowLoginUI)。【参考方案2】:

文档似乎有错误。根据 API 更改日志,该类方法已被替换。

FBSession 类方法 sessionOpenWithPermissions:completionHandler: 已被移除,改为使用新的 openActiveSessionWithPermissions:allowLoginUI:completionHandler: 类方法。

API Change log URL

【讨论】:

请原谅我的无知,但正确的代码是什么? 您可以将 AppDelegate 中的 openSession 方法替换为类似于:code-(void)openSessionWithAllowLoginUI:(BOOL)allowLoginUI 您还将相应地更新对该方法的所有调用。查看已完成的 Scrumptious 示例项目,因为它已使用新的类方法实现进行了更新。

以上是关于FBSession 的 Facebook iOS SDK 3.0 登录教程问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中,必须为调用此端点指定一个打开的 FBSession

Facebook SDK FBSession 无限循环和崩溃

iOS 应用使用 Facebook 应用凭据

必须指定 FBSession 解析

Facebook iOS SDK - 获取用户相册

帮助 facebook ios sdk