2012-09-11 49 views
1

我的目標是在我的應用中添加一個邀請朋友的apprequest按鈕。你如何預先授權Facebook對話 - 像apprequest?

問題是它讓我登錄。這通常不會成爲問題,但在這種情況下,用戶已經將他們的登錄信息輸入到Facebook,以便在應用內執行另一個功能。該功能是由目前不可用的其他人撰寫的。

最終發生的是用戶必須登錄兩次。一旦使用其他人的功能,一次使用apprequest對話框。我需要以某種方式共享憑證/授權/會話,以便我不提示用戶登錄兩次。

我看不到任何參數要在標準應用程序請求對話框代碼中傳遞以預先授權嘗試。我假設我可以用Facebook對象做些事情。另外,我對Objective C非常陌生,所以我對代表的理解很薄弱。我一直在看它,但我不知道Facebook對象想要作爲委託的函數是什麼類型。我的理解是,Facebook可以回調委託,實質上是提供異步確認或請求或類似的東西。但我怎麼知道它期望什麼樣的委託?它會傳遞什麼參數?等..

無論如何,這是我的應用程序請求的基本代碼塊。我不知道該從哪裏去阻止登錄框彈出兩次。

Facebook *facebook = [[Facebook alloc] initWithAppId:<#(NSString *)#> andDelegate:<#(id<FBSessionDelegate>)#>]; 
// I realize I have to fill in my own AppID, which I have but I'm not entirely sure about the delegate 

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"Come check out my app.", @"message", 
           nil]; 

[self.facebook dialog:@"apprequests" andParams:params andDelegate:nil]; 
+0

我不確定我是否明白'用戶必須登錄兩次'的含義 - 如果您的應用程序使用iOS應用程序的標準登錄流程,則應該可以使用相同的訪問令牌和/或會話,直到會話過期 – Igy

回答

1

你需要設置,以重新使用其他功能創建的會話您Facebook實例accessTokenexpirationDate性能。您可以使用NSUserDefaults或類似機制來堅持這些值。

請注意,有一個new version of the Facebook SDK (3.0)自動會話處理更好。在未來的某個時候,這很可能是強制性的,所以當你有機會的時候你應該轉向它。

+0

Facebook對象的那些成員?我最終找到了其他人爲此應用編寫的幫助函數,並與Facebook進行了連接。我最終通過靜態的Facebook對象調用了對話,該對象運行得非常好 - 本質上共享accessToken和expirationDate。 –