2011-03-16 58 views
2

實施FBSessionDelegate協議我想實現與Facebook的應用程序,我製作iOS設備連接。我已經按照他們關鍵的所有方向,並且SDK工作,但我收到一個警告。它說我沒有實現FBSessionDelegate協議。在模擬器的調試過程中,我需要進入safari來登錄FB,而不是在應用程序本身中執行它。 FBSessionDelegate是否對此負責?如果是這樣,我該如何得到它,所以它在應用程序中完成。在Xcode

回答

0

最新FBConnect SDK中通過自身管理的OAuth的工作。登錄將您帶到Safari瀏覽器的Facebook Connect頁面是正常的。閱讀this線程

+0

感謝隊友,我發現的大多數幫助都使用了FBConnect的舊方法,並且弄不清楚哪種方式是當前sdk的正確方式 – 2011-03-17 17:43:17

+0

爲什麼我不能從sdk中存在的示例應用程序獲得幫助。它幾乎涵蓋了大部分基本的東西。 – Vin 2011-03-17 17:49:45

3

您是否實施了FBSessionDelegate協議中的方法,如​​中所定義的?

@protocol FBSessionDelegate <NSObject> 
@optional 
- (void)fbDidLogin; 
- (void)fbDidNotLogin:(BOOL)cancelled; 
- (void)fbDidLogout; 
@end 

這些應該分配給delegate

[facebook authorize:permissions delegate:<delegate object>]; 

這可能是一個好主意,先解決委託警告的對象來實現。

+0

這可能是我的問題,我一直在搜索,我發現許多網站只顯示舊的方式來實現FBConnect,謝謝。 – 2011-03-17 17:42:26

0

的FBSessionDelegate不負責這個問題。如果無法啓動FB App,則iOS SDK會回退到Safari。 在Facebook.m在這個方法:

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth 
        safariAuth:(BOOL)trySafariAuth 

...有此評論:

// If the device is running a version of iOS that supports multitasking, 
    // try to obtain the access token from the Facebook app installed 
    // on the device. 
    // If the Facebook app isn't installed or it doesn't support 
    // the fbauth:// URL scheme, fall back on Safari for obtaining the access token. 
    // This minimizes the chance that the user will have to enter his or 
    // her credentials in order to authorize the application. 

這一評論解釋了爲什麼Safari瀏覽器將被用於代替FB應用的原因。

  1. 是您的模擬器, 支持多任務的設備?

  2. 您的模擬器是否安裝了FB App ?

  3. 爲FB的應用程序的最新版本? (以確保它支持 fbauth://方案)

的FBSessionDelegate,如dfrdmn解釋,實現3種方法,將所有重定向到FB或Safari瀏覽器後,被稱爲已經發生,因此ISN對你的問題沒有貢獻。

爲了擺脫這一警告的有你需要確保你做一些事情。

- 在您的.h文件中確保您實現FBSessionDelegate。

@interface AppDelegate : NSObject <FBSessionDelegate> 

- 在您的.h文件中,確保您#import「Facebook.h」。使用@class Facebook將不起作用。

+0

感謝您的回覆。正如您所說的,最新的Facebook SDK會嘗試使用FB應用程序或Safari進行身份驗證。我沒有在設備上測試它,所以它總是回退到Safari進行身份驗證。在設備上測試它會回退到FB應用程序進行身份驗證。感謝您的支持人員。 – 2011-04-13 18:00:46