2013-01-14 116 views
0

我正在使用Facebook iOS SDK 3.1.1並已成功整合了許多Facebook功能。秉承3.1.1,我在使用使用3.0 SDK的Facebook apprequests

 [FBSession openActiveSessionWithPermissions:permission 
             allowLoginUI:bAllowLoginUI 
            completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 
            [self sessionStateChanged:session state:state error:error]; 
     }]; 

登錄然後我需要發送「apprequests」,並沒有在SDK 3.1實現新的方法,所以我一直在使用退卻到棄用API Facebook對象和FBDialog。

然而,呼籲棄用的對話框功能:

[m_pFacebook dialog:@"apprequests" 
      andParams:params 
     andDelegate:delegate]; 

導致FBDialog彈出並提示用戶通過對話框重新登錄。我需要直接進入apprequests對話框,而不需要用戶再次輸入他們的憑證,我相信有一種方法可以做到,因爲我已經看到它在Diamond Dash和其他遊戲中實施。

我試着FBSession.activeSession.accessToken設置m_pFacebook.accessToken,我也確保m_pFacebook.session充滿FBSession的登錄會話

任何人都遇到過這個問題嗎?

回答

0

經過一番調試,發現Facebook * m_pFacebook對象的expirationDate沒有更新,因此_lastAccessTokenUpdate仍然在[NSDate distantPast]中。解決的辦法是打電話

[m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate]; 

時sessionStateChanged到FBSessionStateOpen

- (void) sessionStateChanged:(FBSession*)session state:(FBSessionState)state error:(NSError*)error { 
    switch (state) { 
     case FBSessionStateOpen: 
      [m_pFacebook fbDialogLogin:session.accessToken expirationDate:session.expirationDate]; 
     break; 
    } 
}