gpt4 book ai didi

ios - FBSessionDelegate 方法未触发

转载 作者:可可西里 更新时间:2023-11-01 06:22:36 26 4
gpt4 key购买 nike

我正在尝试实现最新的 Facebook Connect SDK,但遇到了一些麻烦。由于某些原因,FBSessionDelegate 协议(protocol)的委托(delegate)回调未被触发。我已按照 git Facebook 页面上的说明进行操作,并尝试模仿 Facebook 示例应用程序,但没有成功。我在这里快疯了,所以我要发布我的代码,也许有人会看到我错过的一些愚蠢的东西。

#import <Foundation/Foundation.h>
#import "FBConnect.h"

@interface FacebookWrapper : UIViewController <FBSessionDelegate, FBRequestDelegate, FBDialogDelegate>{
Facebook* _facebook;
NSArray* _permissions;
}

@property(readonly) Facebook *facebook;

- (void)login;

@end

#import "FacebookWrapper.h"

static NSString* kAppId = @"1234455667778";

@implementation FacebookWrapper

@synthesize facebook = _facebook;

- (id)init {
if (self = [super init]) {
_permissions = [[NSArray arrayWithObjects: @"read_stream", @"offline_access",nil] retain];
_facebook = [[Facebook alloc] initWithAppId:kAppId];

}
return self;
}

- (void)dealloc {
[_facebook release];
[_permissions release];
[super dealloc];
}

- (void)login {
[_facebook authorize:_permissions delegate:self];
}

- (void)fbDidLogin {
NSLog(@"Did Log In");
}

- (void)fbDidNotLogin:(BOOL)cancelled {
NSLog(@"Failed to log in");
}

- (void)fbDidLogout {
NSLog(@"Logged Out");
}

并从另一个类调用它,

FacebookWrapper *fw = [[FacebookWrapper alloc] init];
[fw login];

我在电话上看到的行为符合预期。 Facebook 应用程序在 init 上启动并请求权限。然后电话将我的应用程序带回前台,但永远不会触发 FBSessionDelegate 的委托(delegate)。我已经使用我的应用程序 ID 在 Facebook 示例应用程序中尝试过此操作,并且运行良好。我不知道有什么区别。

最佳答案

我发现了问题。在 App Delegate 中,您需要覆盖 handleOpenURL。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[facebookWrapper facebook] handleOpenURL:url];
}

如果您像我一样正在创建一个包装器类,您将需要在应用程序委托(delegate)中有一个它的实例,这样您就可以在 Facebook 类中调用 hanleOpenURL 方法。另请注意,我的 FacebookWrapper 类中的 Facebook 实例有一个公共(public)只读属性,因此我可以调用 handlOpenURL。

通过这样做,您的应用程序在从 Facebook 应用程序内部获取权限返回时将知道从哪里继续。

关于ios - FBSessionDelegate 方法未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com