2016-01-06 2 views
6

Я разрабатываю одно приложение для простого чата с использованием XMPPFramework от robbiehanson. Я установил eJabberd сервер в моей системе и создал некоторых пользователей. Я установил hostname = "localhost" и попытался войти в систему с учетными данными этого пользователя. Он успешно вошел в систему. Когда я меняю имя хоста, то есть имя хоста = "talk.google.com". Я не могу войти. Я получил "Подписанные в попытке предотвратить" почту иiOS: XMPPFramework: не могу войти с помощью учетной записи gmail

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized></not-authorized></failure>

FYI,

- (BOOL)connectWithUsername:(NSString*)username WithPassword:(NSString*)pwd 
{ 
    if (![xmppStream isDisconnected]) { 
     return YES; 
    } 

    // NSString *myJID = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyJID]; 
    //NSString *myPassword = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyPassword]; 
    NSString* myJID=username; 
    NSString* myPassword=pwd; 
    // 
    // If you don't want to use the Settings view to set the JID, 
    // uncomment the section below to hard code a JID and password. 
    // 
    // Replace me with the proper JID and password: 
    // myJID = @"[email protected]/xmppframework"; 
    // myPassword = @""; 

    if (myJID == nil || myPassword == nil) { 
     NSLog(@"JID and password must be set before connecting!"); 

     return NO; 
    } 

    [xmppStream setMyJID:[XMPPJID jidWithString:myJID]]; 
    password = myPassword; 

    NSError *error = nil; 
    if (![xmppStream connectWithTimeout:100 error:&error]) 
    { 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error connecting" 
                  message:@"See console for error details." 
                  delegate:nil 
                cancelButtonTitle:@"Ok" 
                otherButtonTitles:nil]; 
     [alertView show]; 

     NSLog(@"Error connecting: %@", error); 

     return NO; 
    } 


    [self goOnline]; 

    return YES; 
} 

Am Мне нужно зарегистрировать приложение в консоли Google Developer? Просьба предоставить мне решение для интеграции учетной записи Gmail в XMPPFramework.

+0

[проверить его] (http://stackoverflow.com/questions/22865340/gtalk-implementation-in-ios) –

+0

@the_UB Я не мог видеть – Sridhar

+0

нажмите на текст 'check it' –

ответ

0

Вы уверены, что правильно настроили JID и hostname?

Есть несколько инструкций в файле XMPPStream.h только что выше hostname.

Вы также должны знать, что конфигурации для серверов Google на XMPP немного отличаются, убедитесь, что требуемые конфигурации выполняются внутри файла XMPPXOAuth2Google.m, а также внутри метода goOnline для делегата.

изменения некоторых значений выполняются XMPPFramework:

- (void)goOnline 
{ 
    XMPPPresence *presence = [XMPPPresence presence]; // type="available" is implicit 

    NSString *domain = [xmppStream.myJID domain]; 

    //Google set their presence priority to 24, so we do the same to be compatible. 

    if([domain isEqualToString:@"gmail.com"] || 
     [domain isEqualToString:@"gtalk.com"] || 
     [domain isEqualToString:@"talk.google.com"]) 
    { 
     NSXMLElement *priority = [NSXMLElement elementWithName:@"priority" stringValue:@"24"]; 
     [presence addChild:priority]; 
    } 

    [[self xmppStream] sendElement:presence]; 
} 
+0

@Thanks UnknOwn.Bit, Какие изменения необходимо сделать в XMPPXOAuth2Google.m? – Sridhar

+0

Получили ли вы ответ? – Sagrian

+0

no i did not получить ответы – Sridhar