Ich habe ein Problem, Verbindung zu Facebooks XMPP herzustellen, um chat api zu benutzen. Tatsächlich ist das einzige Problem, dass ich die JID nicht kenne, manchmal hat der Benutzer seinen Benutzernamen nicht angegeben und es wird nicht funktionieren, einfach indem er seine Benutzerkennung als JID einstellt.Facebook Chat Schwierigkeit JID des Benutzers
Ich habe meine eigene JID von Facebook ausprobiert, die ich in iChat verwende und es hat perfekt funktioniert.
Also, nach den Dokumenten sollte ich eher Benutzer in den Chat protokollieren, indem Sie Zugriffstoken anstelle von Benutzername/Passwort verwenden.
I successfuly bin angemeldet, das accesss Token in Form ist: 18112 ... | f6daa87 ...- 1392 ... | Qe7 ...- Sd6 ...
Now I Verwenden Sie das XMPPFramework mit XMPPStreamFacebook von Eric Chamberlain. Ich bekommen Das ist meine Methode
-(void)launchService {
if (xmppStream) {
[xmppStream release];
xmppStream = nil;
}
xmppStream = [[XMPPStreamFacebook alloc] init];
xmpReconnect = [[XMPPReconnect alloc] initWithStream:xmppStream];
if (xmppRosterStorage) {
[xmppRosterStorage release];
xmppRosterStorage = nil;
}
xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];
if (xmppRoster) {
[xmppRoster release];
xmppRoster = nil;
}
xmppRoster = [[XMPPRoster alloc] initWithStream:xmppStream rosterStorage:xmppRosterStorage];
[xmppStream addDelegate:self];
[xmppRoster addDelegate:self];
[xmppRoster setAutoRoster:YES];
[xmppStream setHostName:@"chat.facebook.com"];
[xmppStream setHostPort:5222];
[xmppStream setMyJID:[XMPPJID jidWithString:@"[email protected]"]];
// You may need to alter these settings depending on the server you're connecting to
allowSelfSignedCertificates = NO;
allowSSLHostNameMismatch = NO;
// Uncomment me when the proper information has been entered above.
NSError *error = nil;
if (![xmppStream connect:&error])
NSLog(@"Error connecting: %@", error);
}
und
- (void)xmppStreamDidConnect:(XMPPStream *)sender {
NSError *error = nil;
// [xmppStream authenticateWithAccessToken:[self appDelegate].token error:&error];
NSLog(@"---------- xmppStreamDidConnect: ----------");
isOpen = YES;
if (![[self xmppStream] authenticateWithAccessToken:[self appDelegate].token error:&error])
{
NSLog(@"Error authenticating: %@", error);
}
}
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
{
NSLog(@"---------- xmppStream:didNotAuthenticate: ---------- %@ desc %@",error,[error description]);
}
...
in der Konsole den Chat starten:
2011-01-15 19:41:06.547 Facebookwebsiteziosfbconnect[81160:207] SEND: <?xml version='1.0'?>
2011-01-15 19:41:06.548 Facebookwebsiteziosfbconnect[81160:207] SEND: <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' to='chat.facebook.com'>
2011-01-15 19:41:06.920 Facebookwebsiteziosfbconnect[81160:207] RECV: <?xml version="1.0"?><stream:stream id="4788E768" from="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en">
2011-01-15 19:41:06.922 Facebookwebsiteziosfbconnect[81160:207] RECV: <stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
2011-01-15 19:41:06.922 Facebookwebsiteziosfbconnect[81160:207] ---------- xmppStreamDidConnect: ----------
2011-01-15 19:41:07.829 Facebookwebsiteziosfbconnect[81160:207] ---------- xmppStream:didNotAuthenticate: ---------- (null) desc (null)
Ich mag nur bestätigen, dass, wenn ich die reale Login zur Verfügung gestellt (das Ich benutze in iChat) anstelle von [email protected], und meine Passwort-Authentifizierung in didConnect alles funktioniert die Authentifizierung.
Hat jemand das Problem? Thx im Voraus.
Ich steckte mit dem gleichen Problem. Haben Sie eine funktionierende Lösung gefunden? – KishoreK