Google app engine 当通过XMPP从GAE连接到google talk时,转义fromJid中的字符。
我有一个基于GAE的聊天应用程序。用户之间的内部聊天信息通过google channel api传递。因为所有的用户都已经有了GoogleID,我还想通过XMPP在GoogleTalk上与用户进行通信 要做到这一点,我需要将在我端发起聊天的用户的用户id(电子邮件)传递给google talk,这样当消息返回时,我可以通过他的频道将其发送回该用户 因此,我需要使用fromUser JID发送邀请和后续消息Google app engine 当通过XMPP从GAE连接到google talk时,转义fromJid中的字符。,google-app-engine,xmpp,Google App Engine,Xmpp,我有一个基于GAE的聊天应用程序。用户之间的内部聊天信息通过google channel api传递。因为所有的用户都已经有了GoogleID,我还想通过XMPP在GoogleTalk上与用户进行通信 要做到这一点,我需要将在我端发起聊天的用户的用户id(电子邮件)传递给google talk,这样当消息返回时,我可以通过他的频道将其发送回该用户 因此,我需要使用fromUser JID发送邀请和后续消息 xmpp.sendInvitation(toUser, fromUser); 和发
xmpp.sendInvitation(toUser, fromUser);
和发送消息的用户JID相同
通读(),我发现Google支持两种格式的fromJID:
your_app_id@appspot.com
或者
第一种方法显然行不通,但第二种方法看起来很有希望
问题是,我需要将完整的电子邮件地址作为“任何”部分传递,因为这是唯一的标识符(我可以jack@jill.com及jack@hill.com作为用户。)
所以,我需要按照
jack@jill.com@myapp.appspotchat.com
根据(),我应该能够这样做,并转义@字符
然而,谷歌似乎并不喜欢它。如果我是否转义@符号,我会得到一个无效的JID异常
我试过了
email.replace("@", "\40");
及
我还注意到,在我上面链接的谷歌文档中,它说
应用程序还可以使用以下格式的自定义地址,其中任何内容都是包含字母、数字和连字符的字符串
这是否意味着它们不支持该扩展名中的转义字符?还是我做错了什么?有没有别的方法可以逃脱我失踪的人
我还可以选择其他几条路线,但我也无法让它们中的任何一条发挥作用,因此如果有人提出建议,我将不胜感激
不幸的是,我们只支持文档建议的字母、数字和连字符。这甚至意味着,即使XEP-0106允许,我们也不接受除字母、数字和连字符以外的转义字符。这更多的是谷歌谈话所基于的一些系统的内部限制,而不是其他任何系统
也就是说,我将努力使我们的文档更加明确地说明这一点。我将为您研究这一点。同时,您是否考虑过对电子邮件进行base64编码?
email.replace("@", "\40");
email.replace("@", "\\\40");