适用于 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 从未在多笔尖应用程序中调用

适用于iOS的Facebook SDK:未显示FBSDKShareDialog

适用于 iOS 的 Facebook SDK

适用于 iOS 的 Facebook SDK 登录

适用于 iOS 访问令牌问题的 Facebook SDK

适用于 iOS 的 Facebook SDK 的权限