2012-03-29 65 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