jmu*_*phy 3 facebook fbconnect facebook-graph-api ios facebook-ios-sdk
我正在尝试实施最新的Facebook Connect SDK,但我遇到了一些麻烦.由于某种原因,FBSessionDelegate协议的委托回调没有被触发.我按照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");
}
Run Code Online (Sandbox Code Playgroud)
并从另一个班级称呼这个,
FacebookWrapper *fw = [[FacebookWrapper alloc] init];
[fw login];
Run Code Online (Sandbox Code Playgroud)
我在手机上看到的行为与预期一致.Facebook应用程序在init上启动并请求权限.然后手机将我的应用程序带回前台,但代表FBSessionDelegate们从未被解雇.我已经使用我的应用程序ID在Facebook示例应用程序中尝试了这一点,它运行正常.我不知道有什么区别.
我解决了这个问题.在App Delegate中,您需要覆盖handleOpenURL.
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[facebookWrapper facebook] handleOpenURL:url];
}
Run Code Online (Sandbox Code Playgroud)
如果您正在创建一个包装类,那么您需要在app委托中使用它的实例,这样您就可以在Facebook类中调用hanleOpenURL方法.另请注意,我的FacebookWrapper类中的Facebook实例有一个公共只读属性,因此我可以调用handlOpenURL.
通过这样做,您的应用程序将知道从获取Facebook应用程序内部权限返回时的继续.
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |