我有一个基于GAE的聊天应用程序。用户之间的内部聊天消息通过谷歌频道api传递。由于所有用户都已拥有Google ID,因此我还希望通过XMPP在Google Talk上与用户进行通信。
要做到这一点,我需要将发起聊天的用户的用户ID(电子邮件)传递给google talk,这样当消息回来时,我可以通过他的频道将其路由回给该用户。
因此,我需要使用fromUser JID发送邀请和后续消息
xmpp.sendInvitation(toUser, fromUser);
和用于发送消息的fromUser JID相同。
阅读(https://developers.google.com/appengine/docs/java/xmpp/overview),我看到Google支持fromJID的两种格式:
your_app_id@appspot.com
或,
anything@your_app_id.appspotchat.com
第一个显然不起作用,但第二个看起来很有希望。
问题是,我需要将完整的电子邮件地址作为“任何”部分传递,因为这是唯一的标识符(我可以将jack@jill.com和jack@hill.com作为用户。)
所以,我需要传递一些东西 插孔@ jill.com @ myapp.appspotchat.com
根据(http://xmpp.org/extensions/xep-0106.html),我应该能够做到这一点,并逃脱@角色。
然而,谷歌似乎并不喜欢它。如果我是否逃避@符号,我会收到无效的JID异常。
我试过
email.replace("@", "\40");
和
email.replace("@", "\\\40");
我还注意到,在我上面链接的谷歌文档中,它说,
应用程序还可以使用以下格式的自定义地址,其中任何内容都是包含字母,数字和连字符的任何字符串
这是否意味着他们根据该扩展名不支持转义字符?或者我做错了什么?有没有其他方法可以逃避他们我错过了?
我可以采取其他几条路线,但我也无法让其中任何一条路线工作,所以如果有人有建议,我会非常感激。
答案 0 :(得分:0)
不幸的是,我们只支持文档建议的字母,数字和连字符。即使XEP-0106允许,这甚至意味着我们不接受除字母,数字和连字符之外的转义字符。这更像是Google Talk所基于的某些系统的内部限制。
那就是说,我会努力使我们的文档更加明确。