- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试实现最新的 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/
我正在尝试实现最新的 Facebook Connect SDK,但遇到了一些麻烦。由于某些原因,FBSessionDelegate 协议(protocol)的委托(delegate)回调未被触发。我已
将 Sharekit 组添加到我的项目并收到如此多的编译警告。 这是一个静态实例,在静态方法中传递 self 参数是不正确的,因为在静态方法中没有这个对象的特定实例。我该如何解决这个问题。 + (v
我很清楚,如果用户授予或拒绝权限,这些将在登录时调用: - (void)fbDidLogin; - (void)fbDidNotLogin:(BOOL)cancelled; 但我想知道什么时候可以调用
嘿开发者,我正在尝试将 Facebook iOS 实现到我的 Xcode 项目中。我在 http://developers.facebook.com/docs/guides/mobile/#ios 上
我正在尝试使用我为 iOS 设备创建的应用程序实现 Facebook 连接。我已经按照他们的所有指示进行操作,并且 SDK 可以正常工作,但我收到了一个警告。它说我没有实现 FBSessionDele
使用 facebook-facebook-ios-sdk-cf1c2c3,_sessionDelegate 对象在我的应用移至后台之前被释放。 这意味着当应用程序在身份验证/授权回调后进入前台时,Fa
我是一名优秀的程序员,十分优秀!