使用 Openfire 中的用户服务通过 iOS 的 xmpp 框架注册新用户
Posted
技术标签:
【中文标题】使用 Openfire 中的用户服务通过 iOS 的 xmpp 框架注册新用户【英文标题】:Use User Service in Openfire to Register new user via xmpp framework for iOS 【发布时间】:2014-06-19 02:36:58 【问题描述】:我现在可以看到在我的 openfire 服务器中手动创建的用户,我正在使用一本书来实现这一点,但是,程序员可以使用 openfire 和用户服务插件通过 http 注册用户。我想知道如何使用此功能注册新用户,以及是否可以使用我的 ios 应用程序检查用户是否已存在于 openfire 服务器上。如何获取我的 openfire 的 http 链接以实现注册或有其他方法?我读到对于自定义注册,创建一个网络服务会很好,但我对网络服务知之甚少,所以请任何人都可以提供帮助,谢谢。
【问题讨论】:
【参考方案1】:您需要通过创建 NSXMLElement 来注册用户并将其传递给 xmppstream 以注册新用户。确保您拥有 xmppstream 对象,以便您能够向服务器发起查询并获得所需的输出。
NSMutableArray *elements = [NSMutableArray array];
[elements addObject:[NSXMLElement elementWithName:@"username" stringValue:@"abc"]];
[elements addObject:[NSXMLElement elementWithName:@"password" stringValue:@"xyz"]];
[elements addObject:[NSXMLElement elementWithName:@"name" stringValue:@"abc"]];
[elements addObject:[NSXMLElement elementWithName:@"email" stringValue:@"abc@xyz.com"]];
[self.xmppStream registerWithElements:elements error:nil];
[self connect];
这将注册一个新用户,或者如果该用户已经存在于您的服务器上,它会在收到的 iq 中给您一个错误。
【讨论】:
嗨@skaur 感谢您的回答!我会看看这个!为了正确注册用户,哪些字段是必需的?我还有另一个问题,现在我可以连接并显示 openfire 服务器,我提交了自动获取名册但我没有得到它,我正在使用 xmpp 框架中实现的 coredatarosterstorage,我如何验证名册是否是正确填充?我没有得到该帐户的朋友! 您好@user3741129,您可以从服务器请求注册字段。这是获取注册字段的 XML 查询:这个解决方案对我有用。更有条理的方法
NSString *username = @"rohit@XMPP_SERVER_IP_HERE"; // OR [NSString stringWithFormat:@"%@@%@",username,XMPP_BASE_URL]]
NSString *password = @"SOME_PASSWORD";
AppDelegate *del = (AppDelegate *)[[UIApplication sharedApplication] delegate];
del.xmppStream.myJID = [XMPPJID jidWithString:username];
NSLog(@"Does supports registration %ub ", );
NSLog(@"Attempting registration for username %@",del.xmppStream.myJID.bare);
if (del.xmppStream.supportsInBandRegistration)
NSError *error = nil;
if (![del.xmppStream registerWithPassword:password error:&error])
NSLog(@"Oops, I forgot something: %@", error);
else
NSLog(@"No Error");
// You will get delegate called after registrations in either success or failure case. These delegates are in XMPPStream class
// - (void)xmppStreamDidRegister:(XMPPStream *)sender
//- (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error
【讨论】:
以上是关于使用 Openfire 中的用户服务通过 iOS 的 xmpp 框架注册新用户的主要内容,如果未能解决你的问题,请参考以下文章
数据包中 getChildElement 中的 Openfire XMPP 组件命名空间