在xcode中实现FBSessionDelegate协议

时间:2011-03-16 08:48:00

标签: objective-c xcode ios4 facebook

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

3 个答案:

答案 0 :(得分:3)

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

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

这些应该在

中分配给delegate的对象中实现
[facebook authorize:permissions delegate:<delegate object>];

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

答案 1 :(得分:0)

最新的FBConnect sdk自己负责管理OAuth。登录将您带到safari上的Facebook Connect页面是正常的。阅读this帖子

答案 2 :(得分:0)

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 App的原因。

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

  2. 你的模拟器是否有FB应用程序 设置?

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

  4. 正如dfrdmn所解释的那样,FBSessionDelegate实现了3个方法,这些方法在重定向到FB或Safari之后都会被调用,因此不会对你的问题做出贡献。

    要摆脱这种警告,您需要确保做一些事情。

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

    @interface AppDelegate : NSObject <FBSessionDelegate>
    

    - 在.h文件中,请确保#import“Facebook.h”。使用@class Facebook无效。