【问题标题】:Implementing FBSessionDelegate protocol in xcode在 xcode 中实现 FBSessionDelegate 协议
【发布时间】:2011-03-16 08:48:00
【问题描述】:

我正在尝试使用我为 iOS 设备创建的应用程序实现 Facebook 连接。我已经按照他们的所有指示进行操作,并且 SDK 可以正常工作,但我收到了一个警告。它说我没有实现 FBSessionDelegate 协议。在模拟器中调试期间,我进入 safari 以登录 FB,而不是在应用程序本身中进行。 FBSessionDelegate 是否对此负责?如果是这样,我如何获得它以便它在应用程序中完成所有操作。

【问题讨论】:

    标签: objective-c xcode ios4 facebook


    【解决方案1】:

    您是否实现了Facebook.h 中定义的FBSessionDelegate 协议中的方法?

    @protocol FBSessionDelegate <NSObject>
    @optional
    - (void)fbDidLogin;
    - (void)fbDidNotLogin:(BOOL)cancelled;
    - (void)fbDidLogout;
    @end 
    

    这些应该在分配给delegate的对象中实现

    [facebook authorize:permissions delegate:<delegate object>];
    

    首先解决该委托警告可能是个好主意。

    【讨论】:

    • 这可能是我的问题,我一直在谷歌搜索,我发现的许多网站只显示了实现 FBConnect 的旧方法,谢谢。
    【解决方案2】:

    最新的 FBConnect sdk 可以自行管理 OAuth。登录将您带到 safari 上的 Facebook Connect 页面是正常的。阅读this线程

    【讨论】:

    • 谢谢伙计,我发现的大多数帮助都使用了 FBConnect 的旧方法,而且很难确定哪种方法是当前 sdk 的正确方法
    • 为什么不从 sdk 中的示例应用程序获得帮助。它几乎涵盖了大部分基本内容。
    【解决方案3】:

    FBSessionDelegate 不对这个问题负责。如果无法启动 FB 应用程序,iOS SDK 会回退到 Safari。 在 Facebook.m 中这种方法:

    - (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
                        safariAuth:(BOOL)trySafariAuth
    

    ...有这样的评论:

      // If the device is running a version of iOS that supports multitasking,
      // try to obtain the access token from the Facebook app installed
      // on the device.
      // If the Facebook app isn't installed or it doesn't support
      // the fbauth:// URL scheme, fall back on Safari for obtaining the access token.
      // This minimizes the chance that the user will have to enter his or
      // her credentials in order to authorize the application.
    

    此评论解释了为什么使用 Safari 而不是 FB 应用程序。

    1. 你的模拟器是一个设备吗? 支持多任务处理?

    2. 你的模拟器有 FB 应用吗 安装了吗?

    3. FB App 是最新版本吗? (以确保它支持 fbauth:// 方案)

    正如 dfrdmn 所解释的,FBSessionDelegate 实现了 3 个方法,这些方法都将在重定向到 FB 或 Safari 之后调用,因此不会导致您的问题。

    要消除该警告,您需要确保执行一些操作。

    -- 在你的 .h 文件中确保你实现了 FBSessionDelegate。

    @interface AppDelegate : NSObject <FBSessionDelegate>
    

    -- 在你的 .h 文件中确保你 #import "Facebook.h"。使用@class Facebook 将不起作用。

    【讨论】:

    • 感谢您的回复。正如您所说,最新的 Facebook SDK 确实尝试使用 FB 应用程序或 Safari 进行身份验证。我没有在设备上测试它,所以它总是回退到 Safari 进行身份验证。在设备上对其进行测试,它确实会退回到 FB 应用程序进行身份验证。感谢大家的支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多