Sharekit和facebook登录冲突

时间:2012-03-29 19:53:39

标签: objective-c facebook facebook-graph-api login delegates

我在我的应用程序中实现了sharekit,它工作正常,直到我在另一个视图中使用facebook登录。

sharekit要求我在app delegate上添加以下内容:

- (BOOL)handleOpenURL:(NSURL*)url
{
    NSString* scheme = [url scheme];
    NSString* prefix = [NSString stringWithFormat:@"fb%@", SHKCONFIG(facebookAppId)];
    if ([scheme hasPrefix:prefix])
        return [SHKFacebook handleOpenURL:url];
    return YES;
}

问题是facebook登录api要求你在appdelegate上添加以下代码:

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

现在,当我尝试在Facebook上分享内容时,它会要求获得许可,然后没有任何反应,因为它会进入第二种方法。

我试图跟踪这个实例变量“application”,“sourceApplication”,“url”和“annotation”,但它们都没有给我任何关于如何识别它是来自登录还是共享的线索。

有关于此的任何线索吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,这就是如何修复它:

  • 找到您的SHKFacebook.m文件
  • 找到以下功能:


(Facebook*)facebook 
{
  static Facebook *facebook=nil;
  @synchronized([SHKFacebook class]) {
    if (! facebook)
      facebook = [[Facebook alloc] initWithAppId:SHKCONFIG(facebookAppId)         urlSchemeSuffix:SHKCONFIG(facebookLocalAppId) andDelegate:nil];

  }
  return facebook;
}

这段代码必须像这样得到facebook实例(这就是我做的方式):

+ (Facebook*)facebook 
{
  static Facebook *facebook=nil;
  @synchronized([SHKFacebook class]) {
    if (! facebook)

    //Used for overwriting the SHKFacebook instance
      facebook = [[FacebookManager sharedManager]facebook];
  }
  return facebook;
}

这可以解决您的所有问题,甚至可以提升Sharekit的性能,因为用户无需再次登录。祝你好运!

答案 1 :(得分:0)

如果在使用sharekit时添加facebookLocalAppId,则会出现问题。我猜它主要是Facebook SDK的问题。

确保localAppId为空字符串,并在info.plist的url方案中添加fb [AppId]。

它应该工作。为我工作!

https://developers.facebook.com/bugs/314394491907164?browse=search_4efdea61cc7cd8f83499042

希望这有帮助!