Facebook asmack xmpp клиент връща произволни числа за списък

Следвах насоките, дадени в следния SO въпрос, за да се свържа с чат във facebook с помощта на xmpp и мога да се свържа с facebook и да изтегля правилния брой контакти, но когато отпечата контактите, всички те са произволни числа @chat.facebook.com и всички се връщат офлайн.

Примерен проект за чат във Facebook за Android

public void connectToFb() throws XMPPException {

        ConnectionConfiguration config = new ConnectionConfiguration("chat.facebook.com", 5222);
        config.setSASLAuthenticationEnabled(true);
        config.setSecurityMode(SecurityMode.required);
        config.setRosterLoadedAtLogin(true);
        config.setTruststorePath("/system/etc/security/cacerts.bks");
        config.setTruststorePassword("changeit");
        config.setTruststoreType("bks");
        config.setSendPresence(false);
        try {
            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, MemorizingTrustManager.getInstanceList(this), new java.security.SecureRandom());
            config.setCustomSSLContext(sc);
        } catch (GeneralSecurityException e) {
            Log.w("TAG", "Unable to use MemorizingTrustManager", e);
        }
        XMPPConnection xmpp = new XMPPConnection(config);
        try {
            xmpp.connect();
            xmpp.login("user.name", "password"); // Here you have to used only facebookusername from [email protected]
            Roster roster = xmpp.getRoster();
            Collection<RosterEntry> entries = roster.getEntries();
            System.out.println("Connected!");
            System.out.println("\n\n" + entries.size() + " buddy(ies):");
            // shows first time onliners---->
            String temp[] = new String[50];
            int i = 0;
            for (RosterEntry entry : entries) {
                String user = entry.getUser();
                Log.i("TAG", user);
            }
        } catch (XMPPException e) {
            xmpp.disconnect();
            e.printStackTrace();
        }
        }

person Peter    schedule 26.10.2012    source източник


Отговори (3)


Звучи така, сякаш просто искате четливо име, така че опитайте да използвате

rosterEntry.getName()

който връща името на потребителя, вместо

rosterEntry.getUser()

който връща JID.

Все пак не съм сигурен за вашия офлайн проблем. Как се проверява? Трябва да настроите списък слушател, за да получите промени в присъствие.

person Robin    schedule 30.10.2012
comment
Направих това и се получи, благодаря, но сега, когато се опитам да проверя дали потребителят е онлайн, винаги се връща, че е офлайн и не мога да изпращам съобщения на никого... - person Peter; 31.10.2012
comment
Използване на .getPresence на JID или името. Как да се справя с изпращането на съобщения? - person Peter; 31.10.2012

Това е грешка в XMPP библиотеката. Има работа за това.

Стъпка 1: Свържете се с XMPP.

Стъпка 2: Влезте в акаунта във facebook чрез xmpp.

Стъпка 3: получете онлайн списък с приятели, като използвате тази fql заявка.

    SELECT uid, name, online_presence ,
      sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

След това свързвам адреса с низ [email protected] и комуникирам чрез XMPP.

person Jan    schedule 24.01.2013
comment
Благодаря за информацията, актуализирах въпроса си с текущия си код, къде да вмъкна този код? - person Peter; 24.01.2013
comment
след влизане как да получа тези uid, с помощта на uid и как мога да получа тези неща - person Karthick M; 02.04.2014
comment
uid е потребителско име на приятел във вашия списък с приятели. - person Jan; 02.04.2014

(Не е 100% ясно какъв проблем имате по отношение на онлайн/офлайн нещо, може да е грешка или нещо, което правите неправилно), но няма да получите обратно действителните потребителски идентификатори на потребителя в отговора, това се споменава в документите:

The user's own Jabber ID (JID) is different from the Jabber ID that their contacts will see because the translation is done internally.

person Igy    schedule 29.10.2012
comment
Тогава как ще се създаде xmpp чат клиент за facebook? - person Peter; 30.10.2012
comment
Не съм сигурен защо това би ви попречило да създадете клиент (забележка: имам предвид JID, вие трябва да можете да получите информация за присъствие, доколкото знам) - person Igy; 30.10.2012