我正在尝试创建一个实现 Facebook 聊天的应用程序。据我所知,我已经正确设置了所有 XMPP 东西,但我无法让它工作。
用户登录并通过 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
返回Error Domain=XMPPStreamErrorDomain Code=1“请等待,直到流连接。” UserInfo=0xb23dc30 {NSLocalizedDescription=请等待,直到流连接。}authenticationDate
总是null
如此。此外,从未调用过任何其他委托方法,包括xmppStreamDidAuthenticate
. 我究竟做错了什么?