iOS XMPP之常见错误一:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>)
在XMPP开发中,使用XMPPStream进行连接服务器后,验证过程中,比较常见的一个错误是
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>.
尤其作为初学者(笔者就是这样的),经常会因为这个问题浪费不少时间。
xmpp的使用
1、创建xmppStream
- - (void)setupXmppStream
- {
- // 1. 实例化
- _xmppStream = [[XMPPStream alloc] init];
- [_xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
- }
2、连接服务器
- - (void)connect
- {
- // 1. 实例化XMPPStream
- [self setupXmppStream];
- NSString *hostName = @"sky.local";
- // NSString *hostName = @"127.0.0.1";
- NSString *userName = @"zhaoliu";
- // 设置XMPPStream的hostName&JID
- _xmppStream.hostName = hostName;
- _xmppStream.myJID = [XMPPJID jidWithUser:userName domain:hostName resource:nil];
- // 连接
- NSError *error = nil;
- if (![_xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]) {
- NSLog(@"%@", error.localizedDescription);
- } else {
- NSLog(@"发送连接请求成功");
- }
- }
3、得到服务器相应后回调方法
- #pragma mark - XMPPStream协议代理方法
- #pragma mark 完成连接
- - (void)xmppStreamDidConnect:(XMPPStream *)sender
- {
- NSLog(@"success userName = %@, myJID = %@",sender.myJID.user, sender.myJID);
- // 登录到服务器,将用户密码发送到服务器验证身份
- NSString *password = @"123";
- [_xmppStream authenticateWithPassword:password error:nil];
- }
- #pragma mark 断开连接
- - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error
- {
- NSLog(@"断开连接");
- }
4、登陆信息回调方法(即:[_xmppStream authenticateWithPassword:password error:nil]利用此方法发送密码到服务器完成登陆)
- #pragma mark 身份验证成功
- - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
- {
- NSLog(@"身份验证成功!");
- }
- #pragma mark 用户名或者密码错误
- - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error
- {
- NSLog(@"用户名或者密码错误 error = %@",error);
- }
此时如果代码中的domain与openfire服务器中的设置不一样时,就会导致此错误,虽然我们用一些第三方客户端时一样能登陆成功
- NSString *hostName = @"sky.local";
- NSString *hostName = @"127.0.0.1";
当我用adium、spark等第三方软件时,上面的两个都可以登陆成功。但是用代码时,则第一个就会<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>报错。提示没有注册、从登陆成功。原因是第一个设置与我opnefire服务器中的设置不一样导致。
下面看一下我openfire中的设置
http://blog.csdn.net/sky_2016/article/details/40278661
iOS XMPP之常见错误一:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>)的更多相关文章
- XMPP 常见错误:<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>
一般登陆/注册 出错,会在认证失败这里打印出error信息 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLEleme ...
- XMPP 常见错误:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-autho
1检查jid XMPP认证的问题,一般都是与JID有关的,因此解决这类问题,首选的入口就是分析一下XMPPStream的JID,客户端在与服务器连接后,Socket就绑定了这个端口,用来处理与服务器的 ...
- iOS开发过程中常见错误问题及解决方案
错误原因:ld: x duplicate symbol for architecture x86_64 clang: error: linker command failed with exit co ...
- xmpp 常见错误 一
#pragma mark - 密码错误,身份验证失败 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement ...
- xmpp笔记2(客户端到服务器的例子)--xml
xmpp( 客户端到服务器的例子 ) 1 步:客户端初始流给服务器: <stream:stream xmlns='jabber:client' xmlns:stream='http://ethe ...
- ios开发——错误总结篇&开发中常见错误和警告总结(四)
ios开发——开发总结&开发中常见错误和警告总结(四) 网易彩票实战总结(错误) 错误总结之类的实现 经典错误之重复定义与导入错误 经典错误关于父类的实现 通知对象: 控制器的定义 Xcode ...
- iOS开发总结-Xcode常见错误
iOS开发总结-Xcode常见错误 "file/file.h"filenotfound 如果遇到这种类型的问题报错,可以分为三部来解决,由简到复杂一步一步来,直到解决问题位置. 1 ...
- 李洪强iOS开发之OC常见错误汇总
// // main.m // 16 - 常见错误汇总 // // Created by vic fan on 16/7/13. // Copyright © 2016年 李洪强. All r ...
- Android NDK 开发(三)--常见错误锦集合Log的使用【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511 Android NDK开发经常因某些因素会出现一些意想不到的错误, ...
随机推荐
- JVM报错提示
持久代被占满 异常:java.lang.OutOfMemoryError: PermGen space 说明: Perm空间被占满.无法为新的class分配存储空间而引发的异常.这个异常以前是没有的, ...
- LintCode-不同的子序列
题目描述: 给出字符串S和字符串T,计算S的不同的子序列中T出现的个数. 子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响.(比如,“ACE”是“ ...
- ISO/IEC 14443协议浅谈
一. 非接触IC卡简介 非接触IC卡又称射频卡,是射频识别技术和IC卡技术有机结合的产物.它解决了无源(卡中无电源)和免接触这一难题,具有更加方便.快捷的特点,广泛用于电子支付.通道控制.公交收费.停 ...
- 如何禁止scrollView 的子控件自动滑到 底部或者中间部分
现象:当一个scrollView 里面包含很多childView,并且整个界面超出屏幕的范围,而且每个childView都获取焦点,scrollView就会自动滑到底部或者中间部分. 可以使用以下几种 ...
- DropDownList控件学习
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- addChildViewController ipad 中Controller的嵌套和叠加
1.addChildViewController 在 base controller中添加子的controller,会自动调用子的controller中viewDidload,viewWillAppe ...
- 关于DLL搜索路径顺序的一个问题
DLL的动态链接有两种方法.一种是加载时动态链接(Load_time dynamic linking).Windows搜索要装入的DLL时,按以下顺序:应用程序所在目录→当前目录→Windows SY ...
- 《Java4Android视频教程》学习笔记(一)
此为个人的学习笔记,所以不具备太强的学习性,若有错误请谅解,如果能指出我的错误,我将万分感谢~ 一:java历史 java诞生 前身:Oak->java 曾经的名字C++(++--) 原意是在C ...
- Oracle 快照及 dblink使用 (两台服务器数据同步)
/*一.创建dblink:*/ --1.在目的数据库上,创建dblin drop database link dblink_anson; Create public database link dbl ...
- poj 1144 Network(割点)
题目链接: http://poj.org/problem?id=1144 思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| ...