iphone - FB Singleton登录

标签 iphone ios facebook facebook-ios-sdk

我正在创建一个单例来访问所有Facebook方法,并且要处理此单例中的“登录”对话框。

我在Facebook上遵循了iOS SDK教程,但是它只允许我在应用程序启动时登录,而不能在用户按下按钮时登录。

有什么替代品

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

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.facebook handleOpenURL:url];
}

似乎是问题所在,我的应用程序未切换到浏览器或FB App进行登录。
当我在AppDelegate中实现相同的东西时,它可以工作,但应在Application启动后立即进行。

最佳答案

我已经这样解决了:

在AppDelegate中:

-(void)connectToFacebook{
facebook = [[Facebook alloc] initWithAppId:kAPPID andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];

}

if (![facebook isSessionValid]) {
    [facebook authorize:nil];
}
}

// For 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [facebook handleOpenURL:url]; 
}

- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}

在Singleton中:
- (id)init {
self = [super init];
if (self != nil) {
    NBNAppDelegate *delegate = (NBNAppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate connectToFacebook];
    facebook =  delegate.facebook;        
}
return self;
}

关于iphone - FB Singleton登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733298/

相关文章:

ios - 当我在 tabBarController 中的选项卡之间切换时会调用哪个方法?

iphone - 从 iOS 中的 ALAsset 检索到的 URL 播放视频

iphone - UITableviewCell 在表中没有数据时显示消息

facebook - 使用新的 Facebook 共享按钮检测成功共享

Facebook:获取用户是其管理员的页面列表

iphone - 数据排序

ios - SIGABRT Xcode???需要帮助

objective-c - 在 XCode 4 中添加依赖项目

html - 为 iPhone 上的书签选项指定 html 中的 url

php - 如何从 Facebook 导入照片?