0
Smack APIを使用してGoogle Calendar Serverに接続する方法を教えてもらえますか?JavaのSmack APIを使用してGoogle Calendarに接続
Smack APIを使用してGoogle Calendar Serverに接続する方法を教えてもらえますか?JavaのSmack APIを使用してGoogle Calendarに接続
Smackを使用してGoogleカレンダーに接続するとどういう意味ですか? Smackはインスタントメッセージング手段であるXMPPサーバーに接続します。 http://clockwerx.blogspot.com/2008/10/interacting-with-google-calendar-via.htmlに似たものが必要な場合は、2つの側面があります。ボットを実装してから接続して話してください。 しかし、一般的に言えば、ここにあなたがGoogleトークに接続できるようになるのコードサンプルです:
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.packet.Presence.Type;
public class Communicator {
public static final String XMPP_SERVER = "talk.google.com";
public static final String XMPP_HOST_NAME = "gmail.com";
public static final String XMPP_SERVICE_NAME = "gmail.com";
public static final int PACKET_REPLY_TIMEOUT = 500, DEFAULT_XMPP_SERVER_PORT = 5222;
XMPPConnection conn;
Roster buddyList;
public static String canonicalizeUsername(String username) {
if (!username.contains("@")) {
username += "@" + XMPP_SERVICE_NAME;
}
return username;
}
public Communicator(String username, String password) throws XMPPException {
this(XMPP_SERVER, DEFAULT_XMPP_SERVER_PORT, username, password);
}
public Communicator(String serverAddress, Integer serverPort, String username,
String password) throws XMPPException {
username = canonicalizeUsername(username);
SmackConfiguration.setPacketReplyTimeout(PACKET_REPLY_TIMEOUT);
ConnectionConfiguration config =
new ConnectionConfiguration(serverAddress, serverPort != null ? serverPort : DEFAULT_XMPP_SERVER_PORT,
XMPP_HOST_NAME, ProxyInfo.forDefaultProxy());
//config.setSASLAuthenticationEnabled(true);
//config.setSecurityMode(SecurityMode.disabled);
//SASLAuthentication.supportSASLMechanism("PLAIN");
conn = new XMPPConnection(config);
conn.connect();
System.out.println("Connected to " + serverAddress + ":" + serverPort);
conn.login(username, password);
System.out.println("Logged in as " + username);
setStatus(true, "ON");
}
public void setStatus(boolean available, String status) {
Presence presence = new Presence(available ? Type.available : Type.unavailable);
presence.setStatus(status);
conn.sendPacket(presence);
}
public void destroy() throws Exception {
conn.disconnect();
}
public boolean sendMessage(String msgText, String to) throws XMPPException {
to = canonicalizeUsername(to);
ChatManager mgr = conn.getChatManager();
Chat chat = mgr.createChat(to, new MessageListener() {
public void processMessage(Chat chat, Message msg) {
System.out.println(msg.getBody());
}
});
//important bit is to set Message type to 'chat', Google seems to ignore the default type
Message msg = new Message(msgText, Message.Type.chat);
chat.sendMessage(msg);
return true;
}
public static void main(String args[]) {
try {
Communicator comm = new Communicator("username", "password");
comm.sendMessage("", "");
JOptionPane.showMessageDialog(null, "Close this when you want to quit");
}
catch(Exception e) {
e.printStackTrace();
}
}
}
私は主にJava APIを介してアクセスする必要があることを、Googleのカレンダーを持っています。私たちはGoogleのデータAPIを持っていますが、カレンダーは一般に公開されています。誰かがカレンダーに変更を加えたかどうかを知りたい場合は、自分で通知する必要がありますポーリングをせずに。購読の種類、私は実装することができません。 – user588880