Facebook的asmack XMPP客户端返回花名册随机数 [英] Facebook asmack xmpp client returns random numbers for roster

查看:182
本文介绍了Facebook的asmack XMPP客户端返回花名册随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我也跟着在下面的SO问题给出的guidlines使用XMPP连接到Facebook的聊天,我能够连接到Facebook和拉接触的正确的号码,但是当它打印了接触,他们都随机数@ chat.facebook .com和所有返回脱机状态。

<一个href=\"http://stackoverflow.com/questions/10946508/android-facebook-chat-example-project/11238124#11238124\">Android Facebook的聊天示例项目

 公共无效connectToFb()抛出XMPPException {        ConnectionConfiguration配置=新ConnectionConfiguration(chat.facebook.com,5222);
        config.setSASLAuthenticationEnabled(真);
        config.setSecurityMode(SecurityMode.required);
        config.setRosterLoadedAtLogin(真);
        config.setTruststorePath(/系统的/ etc /安全/ cacerts.bks);
        config.setTruststorePassword(的changeit);
        config.setTruststoreType(BKS);
        config.setSend presence(假);
        尝试{
            的SSLContext SC = SSLContext.getInstance(TLS);
            sc.init(NULL,MemorizingTrustManager.getInstanceList(本),新java.security.SecureRandom中的());
            config.setCustomSSLContext(SC);
        }赶上(GeneralSecurityException E){
            Log.w(TAG,无法使用MemorizingTrustManager,E);
        }
        XMPPConnection XMPP =新XMPPConnection(配置);
        尝试{
            xmpp.connect();
            xmpp.login(user.name,密码); //在这里,你必须从facebookusername@chat.facebook.com仅facebookusername
            名册名册= xmpp.getRoster();
            收集和LT; RosterEntry&GT;条目= roster.getEntries();
            的System.out.println(接!);
            的System.out.println(\\ n \\ n+ entries.size()+哥们(IES):);
            //显示第一次onliners ----&GT;
            字符串临时[] =新的String [50];
            INT I = 0;
            对于(RosterEntry项:项){
                字符串用户= entry.getUser();
                Log.i(TAG,用户);
            }
        }赶上(XMPPException E){
            xmpp.disconnect();
            e.printStackTrace();
        }
        }


解决方案

及其XMPP库中的缺陷。有一个变通为。

第1步:连接到XMPP

第二步:通过XMPP登录Facebook帐户

第三步:使用此FQL查询得到在线好友列表

  SELECT UID,名称,online_ presence,
      从性别用户其中uid IN(SELECT UID2从相知WHERE UID1 =我())

然后我Concat的地址用绳子 uid@chat.facebook.com 并通过XMPP通信。

I followed the guidlines given in the following SO question to connect to facebook chat using xmpp and I am able to connect to facebook and pull the correct number of contacts but when it prints the contacts they are all random numbers @chat.facebook.com and all return offline.

Android Facebook chat example project

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 facebookusername@chat.facebook.com
            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();
        }
        }

解决方案

Its a bug in XMPP library . There is a work around for that .

Step 1: Connect to XMPP.

Step 2: Login to facebook account through xmpp.

Step 3: get online friend list using this fql query .

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

Then i concat address with string uid@chat.facebook.com and communicate via XMPP.

这篇关于Facebook的asmack XMPP客户端返回花名册随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆