适用于 iOs 的 Facebook SDK 无法正常工作
Posted
技术标签:
【中文标题】适用于 iOs 的 Facebook SDK 无法正常工作【英文标题】:Facebook SDK for iOs isn't working correctly 【发布时间】:2012-03-11 12:57:48 【问题描述】:我正在开发一个 ios 5 应用程序,我正在尝试使用 Facebook SDK 添加 Facebook 共享。我一直在编码,但它不起作用。这是我在 Facebook 开发者网站上使用的代码:
- (IBAction) buttonpressed
facebook = [[Facebook alloc] initWithAppId:@"245697495524266" 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];
else
[self fbDidLogin];
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [facebook handleOpenURL:url];
- (void)fbDidLogin
NSLog(@"Facebook did login");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
// Here I would like to share something (photo...)
当我按下按钮时,我会转到 Facebook 应用程序并且我必须允许该应用程序,然后我会返回我的应用程序。问题是- (void) fbDidLogin
没有运行(NSLog
没有出现在控制台中),所以我不能分享任何东西。我该如何解决?
【问题讨论】:
【参考方案1】:唯一的问题可能是您的类在其 .h 文件中不符合 FBSessionDelegate
即
@interface Yourclass : NSObject <FBSessionDelegate>
【讨论】:
我有这个 所以我认为问题不在于这个。还是我只需要 FBSessionDelegate?【参考方案2】:你把这段代码放在哪里了?在应用委托中?
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [facebook handleOpenURL:url];
它必须在应用委托中,而不是在您的班级中。
【讨论】:
【参考方案3】:我认为您忘记了这两种方法,并且可能忘记将您的 Facebook 应用程序 ID 添加到信息文件中的 URL 类型。 for more detail // 4.2 之前的支持
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
return [facebook handleOpenURL:url];
// 对于 4.2+ 支持
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [facebook handleOpenURL:url];
【讨论】:
以上是关于适用于 iOs 的 Facebook SDK 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
适用于 iOS 的 Facebook SDK,fbDidLogin 从未在多笔尖应用程序中调用