【问题标题】:Facebook SDK for iOs isn't working correctly适用于 iOs 的 Facebook SDK 无法正常工作
【发布时间】: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 没有出现在控制台中),所以我不能分享任何东西。我该如何解决?

【问题讨论】:

    标签: iphone facebook facebook-graph-api ios5 sharing


    【解决方案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]; 
      }
      

      【讨论】:

        猜你喜欢
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多