2012-03-29 86 views
1

我在我的应用程序中实现了sharekit,它工作正常,直到我在另一个View中实现用Facebook登录。Sharekit和Facebook登录冲突

的sharekit问我上添加应用程序的委托执行以下操作:

- (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”,但是他们都没有提供任何有关如何识别它是来自登录还是共享的线索。

任何线索呢?

+0

我设法解决,通过操纵布尔属性,但我不认为它是一个很好的解决方案。无论如何它的工作,但我会等待比我更好的解决方案。 – 2012-03-29 20:17:33

回答

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实例(th是是我是如何做到的):

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

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

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

+0

感谢Jonas的改进;) – Nygashi 2012-08-08 09:04:53