FACEBOOK用の XMPP クライアントを作成しています。私はこれを gmail 用に作成しましたが、今度は FaceBook 用に同じものを作成する必要があります。私はこれがいくつかのコードを得たためにたくさんグーグルで検索しましたが、それでもこのタイプのエラーが発生Not connected to server
し、service-unavailable(503)
ここで、私が行ったコードを共有しています。
public class ClientJabberActivity extends Activity {
ArrayList<String> m_discussionThread;
ArrayAdapter<String> m_discussionThreadAdapter;
XMPPConnection m_connection;
private Handler m_handler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_handler = new Handler();
try {
initConnection();
} catch (XMPPException e) {
e.printStackTrace();
}
final EditText recipient = (EditText) this.findViewById(R.id.recipient);
final EditText message = (EditText) this.findViewById(R.id.message);
ListView list = (ListView) this.findViewById(R.id.thread);
m_discussionThread = new ArrayList<String>();
m_discussionThreadAdapter = new ArrayAdapter<String>(this,
R.layout.multi_line_list_item, m_discussionThread);
list.setAdapter(m_discussionThreadAdapter);
Button send = (Button) this.findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
String to = recipient.getText().toString();
String text = message.getText().toString();
Message msg = new Message(to, Message.Type.chat);
msg.setBody(text);
m_connection.sendPacket(msg);
m_discussionThread.add(" Me : ");
m_discussionThread.add(text);
m_discussionThreadAdapter.notifyDataSetChanged();
}
});
}
private void initConnection() throws XMPPException {
ConnectionConfiguration config = new ConnectionConfiguration(
"chat.facebook.com", 5222, "chat.facebook.com");
config.setSASLAuthenticationEnabled(true);
m_connection = new XMPPConnection(config);
try {
SASLAuthentication.registerSASLMechanism("X-FACEBOOK-PLATFORM",
SASLXFacebookPlatformMechanism.class);
SASLAuthentication.supportSASLMechanism("X-FACEBOOK-PLATFORM", 0);
m_connection.connect();
m_connection.login(apiKey + "|" + sessionKey, sessionSecret, "Application");
} catch (XMPPException e) {
m_connection.disconnect();
e.printStackTrace();
}
Presence presence = new Presence(Presence.Type.available);
m_connection.sendPacket(presence);
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
m_connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String fromName = StringUtils.parseBareAddress(message
.getFrom());
m_discussionThread.add(fromName + ":");
m_discussionThread.add(message.getBody());
m_handler.post(new Runnable() {
public void run() {
m_discussionThreadAdapter.notifyDataSetChanged();
}
});
}
}
}, filter);
ChatManager chatmanager = m_connection.getChatManager();
chatmanager.addChatListener(new ChatManagerListener() {
public void chatCreated(final Chat chat,
final boolean createdLocally) {
chat.addMessageListener(new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
Log.i("CHAT USER",
"Received message is: " + message.getBody());
}
});
}
});
}
}
そしてこのクラスSASLXFacebookPlatformMechanism
このようにログインするにはどうすればよいxmpp.login(apiKey + "|" + sessionKey, sessionSecret, "Application");
ですか、FacebookのアプリケーションキーであるacessTokenを取得する方法を知っています。sessionKey、sessionSecret について、これらの値を取得する方法と、この問題を解決する方法がわかりません。
使用するxmpp.login(apiKey, accessToken, "Application");
と、このエラーが発生します --IllegalArgumentException: API キーまたはセッション キーが存在しません
編集:最後に、Amal ソリューションからソリューションを得ました:xmpp.login(apiKey, accessToken, "Application");