在任何人甚至哭泣重复之前,我想说StackOverflow中目前发布的所有问题都没有让我开始。
我目前的任务是为Android创建一个简单的Facebook聊天客户端。基本上,我只是登录并查看我的在线联系人是谁,然后,我发送和/或接收消息。我之前从未做过这样的事情,所以我继续研究XMPP,甚至试图在http://developers.facebook.com/apps中创建一个应用程序,这样我就可以得到一个API密钥,用于我认为需要进行的所有身份验证。但经过五天研究XMPP和asmack以及Graph和Chat API之后,我被告知我不需要研究所有这些和SASLAuthentication类,而且我不需要获得API密钥。我所要做的就是使用X-FACEBOOK-PLATFORM机制(我已经阅读过网上的每个相关文档)并直接发送消息到username@chat.facebook.com。但是关于它是如何用Java或Android编码的,没有一个好的和完整的指南。
帮助我开始吧? asmack与此有什么关系?我完全不明白我需要如何使用asmack而不需要SASLAuthentication。感谢。
答案 0 :(得分:1)
只是一些信息。
使用Smack连接到FB时有一个discussion thread at Ignite Realtime(实际上有几个search)。
作为旁注,我相信我在某处读到asmack不再被维护/开发。我认为大多数开发人员只是对Smack源进行一些调整,以使其在Android上运行。
答案 1 :(得分:1)
您可以使用XmppConnection与服务器连接..然后使用名册获取在线朋友.. 这里有一些连接,登录和获取朋友的代码 并在主要ui线程中的异步任务中使用此代码..
ConnectionConfiguration connConfig = new ConnectionConfiguration("chat.facebook.com", 5222 , "chat.facebook.com");
connConfig.setSASLAuthenticationEnabled(true);
connConfig.setSecurityMode(SecurityMode.required);
connConfig.setRosterLoadedAtLogin(true);
connConfig.setSendPresence(false);
connection = new XMPPConnection(connConfig);
try
{
connection.connect();
Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());
}
catch (XMPPException ex)
{
Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());
XMPPLogic.getInstance().setConnection(null);
}
try
{
connection.login(username, password);
try
{
Thread.sleep(time);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("XMPPClient", "Logged in as " + connection.getUser());
// Set the status to available
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
XMPPLogic.getInstance().setConnection(connection);
Roster roster = connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
Log.i("Roster", "Roster Connected");
Log.i("Entries", "\n\n" + entries.size() + " buddy(ies):");
for (RosterEntry entry : entries)
{
if (roster.getPresence(entry.getUser()).isAvailable())
{
HashMap<String, Object> contact = new HashMap<String, Object>();
contact.put(NAME, entry.getName());
contact.put(USERID, entry.getUser());
datatList.add(contact);
Log.i("TAG", entry.getName() + entry.getUser());
Log.i("Contact", contact.toString());
}
}
}
catch (XMPPException ex)
{
Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);
XMPPLogic.getInstance().setConnection(null);
}
答案 2 :(得分:0)
伤心地听到你的老板。不要试图理解XMPP。 FB有自己的聊天API。阅读http://developers.facebook.com/docs/chat/