我正在尝试使用我为iOS设备创建的应用程序实现Facebook连接。我已按照所有指示键进行操作,SDK工作正常,但我收到一条警告。它说我没有实现FBSessionDelegate协议。在模拟器中进行调试期间,我需要进入safari才能登录到FB而不是在应用程序本身中进行操作。 FBSessionDelegate对此负责吗?如果是这样,我如何获得它,以便在应用程序中完成所有操作。
答案 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的原因。
你的模拟器是一个设备吗? 支持多任务处理?
你的模拟器是否有FB应用程序 设置?
FB App是最新版本吗? (以确保它支持 fbauth:// scheme)
正如dfrdmn所解释的那样,FBSessionDelegate实现了3个方法,这些方法在重定向到FB或Safari之后都会被调用,因此不会对你的问题做出贡献。
要摆脱这种警告,您需要确保做一些事情。
- 在你的.h文件中,确保你实现了FBSessionDelegate。
@interface AppDelegate : NSObject <FBSessionDelegate>
- 在.h文件中,请确保#import“Facebook.h”。使用@class Facebook无效。