2011-05-13 185 views
2

我很難讓Facebook登錄以反彈到我的應用程序的正確視圖,並調用相應的Facebook功能。Facebook iOS - handleOpenURL&Tabbar應用程序

在這個例子中,Facebook只是簡單的[控制器 facebook]這是他們開始的視圖。我正在使用一個tabbar應用程序,所以我沒有必要的參考。我做了一個指針到所需的視圖,並用它...它正確打開,但不會調用任何與Facebook相關的方法,具體爲:

(void)fbDidLogin; 

(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [[*NotReferencedViewController* facebook] handleOpenURL:url]; 
} 

有沒有其他人遇到這樣?

回答

2

不知道你在說什麼樣的例子,但是你應該在你的Model或UIApplicationDelegate這樣的中心位置創建和存儲你的Facebook對象。然後,它會通過單身訪問,讓您始終能夠訪問它,例如:

[[UIApplication sharedApplication] delegate].facebook 

所以,你可以再從任何視圖控制器需要訪問Facebook的對象。

當你做這樣的事情

NSArray* permissions = [[NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil] retain]; 

[facebook authorize:permissions delegate:self]; 

指定delegate:self意味着你將實現這個類,Facebook的可以打電話通知你某些事件的方法。其中的一個方法是fbDidLogin,並在那裏你可以做任何你需要:

-(void)authorizeFacebook { 
    NSArray* permissions = [NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil]; 

    [facebook authorize:permissions delegate:self]; 
} 

// if the authorization succeeds it will come back to your app and call the method below 
-(void)fbDidLogin { 
    // switch view, call the facebook graph, or do whatever else you like 
} 

你可以在應用程序委託本身,或在視圖控制器做到這一點。

您可以通過檢查的Facebook SDK的.h文件看到facebook的委託方法:Facebook.h,FacebookRequest.h等

編輯

和你handleOpenURL:方法應如下因爲它在FB的例子做(假設你不處理其他URL方案):

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

    return [facebook handleOpenURL:url]; 
} 

http://developers.facebook.com/docs/guides/mobile/#ios

+0

我已經把它放到了appdelegate中,但它現在不會在登錄後立即返回到我的應用程序中。handleOpenURL方法要求對象* facebook *來處理它,但它現在不會踢現在... – 2011-05-18 06:55:21

+0

你有沒有更新你的plist文件,如上面的鏈接所示。 – kball 2011-05-18 16:45:39