2013-06-20 44 views
3

我試圖創建一個實現Facebook Chat的應用程序。盡我所知,我已經正確設置了所有XMPP內容,但是我無法使其正常工作。XMPP身份驗證返回yes,但XMPPStreamDidAuthenticate從未調用

用戶登錄並通過Facebook驗證(通過FBSession)後,我嘗試連接到聊天服務。這裏就是XMPP進來:

-(void)connect 
{ 
    [self setupStream]; 
    NSError *err; 

    [self.xmppStream connectWithTimeout:10.00 error:&err]; 
} 

-(void)setupStream 
{ 
    _xmppStream = [[XMPPStream alloc] initWithFacebookAppId:FACEBOOK_APP_ID]; 
    [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; 
} 

- (void)xmppStreamDidConnect:(XMPPStream *)sender { 
    NSError *error; 
    NSError *err; 
    [self.xmppStream secureConnection:&err]; 
    bool authed = [self.xmppStream authenticateWithFacebookAccessToken: FBSession.activeSession.accessTokenData.accessToken error:&error]; 
    NSLog(@"%@", err); 
    NSLog(@"%@", [self.xmppStream authenticationDate]); 
    NSLog(@"%d, %@", authed, error); 
} 

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender { 
    NSLog(@"did authenticate"); 
    [self goOnline]; 
} 

當運行上面,似乎一切去罰款:xmppStreamDidConnect正在等待片刻後打來電話,authed總是返回YES及其誤差總是null

但是,secureConnection返回錯誤域= XMPPStreamErrorDomain代碼= 1「請等待,直到流連接。」 UserInfo = 0xb23dc30 {NSLocalizedDescription =請等待,直到流連接。}authenticationDate總是null以及。此外,還沒有其他委託方法被調用,包括​​。我究竟做錯了什麼?

回答

3

我終於找到了我的答案!這是,如果任何人在同一問題的運行作爲我:

當調用openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:FBSession對象實際上並沒有與Facebook的服務器進行通信或嘗試與他們進行身份驗證,它只是加載以前authenticationToken。就我而言,這個標記已經失效了,但我沒有意識到這一點,也沒有什麼可以告訴我的。我終於通過記錄令牌並將其放入Facebook的Access Token Debugger中來發現它。要檢查您的令牌是否有效,您必須致電[FBSession renewSystemCredentials:]並等待結果。然後,您可以在嘗試創建新令牌之前確定是否需要手動closeAndClearTokenInformation

+2

這個答案與真正的問題有什麼區別? – p0lAris

相關問題