2010-12-21 68 views
12

Iphone的facebook連接示例調用safari。我不想使用safari。如何解決這個問題。Iphone的facebook連接示例調用safari。我不想用safari

+13

那你想使用,火狐是什​​麼? – BoltClock 2010-12-21 17:01:47

+1

這是很好的笑話 – Voloda2 2010-12-21 17:29:50

+1

非常感謝這個問題......我一直在抨擊我的頭幾個星期,我甚至實現了我自己的UIWebView,看起來比facebook的100倍醜陋 – 2011-01-23 06:34:45

回答

14

我不確定這是否是猶太教徒,但我在Facebook.m中註釋了第131-145行,以彈出一個UIWebView而不是打開Safari中的登錄屏幕。似乎我的工作很好...

+2

對於那些有較新版本的人來說,要找到代碼@donkim指的是搜索BOOL didOpenOtherApp = NO;有用的部分是下面的`if`塊。 – Agos 2011-10-21 12:36:54

2

儘管它打開safari,這是醜陋的事實,你受益於SSO這是一個很棒的功能。如果任何其他應用程序正在使用FBConnect,您的用戶將自動連接到您的。如果Facebook應用程序存在,它甚至更好,登錄是通過Facebook應用程序完成,不再在Safari瀏覽器。

所以我建議你保持這種方式!

我同意整個過程應該有點改進,並且每次連接時至少不要打開一個新的safari選項卡!耐心...

2

如果用戶有iPhone的Facebook應用程序,那麼它將不會打開Safari瀏覽器。 它將直接打開Facebook應用程序

6

上面的Donkim的建議對我使用SDK的1/31/2011承諾非常有效。另一種選擇是在Facebook.m中查找每個對「authorizeWithFBAppAuth:safariAuth:」的調用。您可以將第二個參數從第221,267和274行的YES更改爲NO。

1

所有這些解決方案的問題是您失去了一致的auth_token。因此,如果您需要通過在URL中傳遞auth_token來在代碼中執行手動圖形請求,那麼您根本無法做到這一點。

1

設置safariAuth:NO [self authorizeWithFBAppAuth:YES safariAuth:NO]; (facebook.m:221)

0

對於任何使用較新的Facebook iOS SDK(不知道哪個版本添加了它)的人,您可以使用dialog:@"oauth" ...方法(doc)。正如其他人所說的,你放棄了SSO,但對於像我這樣的用例(一個OpenGL遊戲),我發現疊加層更適合切換到不同的應用程序。

0

文件:Facebook.m |開始於:#220 authorizeWithFBAppAuth:safariAuth: |添加布爾trySafariAuth = NO;行#223

/** 
    * A private function for opening the authorization dialog. 
    */  
    - (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
         safariAuth:(BOOL)trySafariAuth { 

     trySafariAuth = NO; 
     // more code allow blow this, but im too lazy to show it 
     // so please just change the boolean... 
    } 
0
Change following method as follows in facebook.m 

- (void)authorize:(NSArray *)permissions 
      delegate:(id<FBSessionDelegate>)delegate { 

     [_permissions release]; 
     _permissions = [permissions retain]; 

     _sessionDelegate = delegate; 

     [self authorizeWithFBAppAuth:NO safariAuth:NO]; 
     // [self authorizeWithFBAppAuth:NO safariAuth:YES]; 
    }