QuickBlox QB.chat.connect 突然给出令人费解的身份验证错误代码 401
Posted
技术标签:
【中文标题】QuickBlox QB.chat.connect 突然给出令人费解的身份验证错误代码 401【英文标题】:QuickBlox QB.chat.connect giving perplexing authentication error code 401 out of nowhere 【发布时间】:2015-06-09 02:52:28 【问题描述】:我一直在使用 Quickblox 应用程序,并且一切都很好(至少在使用用户帐户登录的情况下......)直到今天下午我开始遇到像这样的令人困惑的用户身份验证错误:
108 606756 log [QBChat]:, Status.AUTHFAIL - 身份验证尝试失败 109 606758 log stringifying the err... "code":401,"status":"error","message":"Unauthorized","detail":"Status.AUTHFAIL - 身份验证尝试失败"
在Chome调试时,QBChat中的XML可以展开,显示“密码未验证”,密码肯定是对的,这很令人费解。
编辑:我肯定密码是正确的,因为它总是先成功登录 QuickBlox,但在尝试登录 QB.CHAT 服务器时偶尔会失败。
我不知道是什么原因造成的。我尝试注销以重新登录空白 - 有时“有效”,有时则无效 - 因此,据我所知,quickblox 可能只是随机决定工作
$scope.signInClick = function()
console.log('Login was clicked');
$scope.loading = $ionicLoading.show(
content: 'Logging in',
animation: 'fade-in',
showBackdrop: true,
maxWidth: 200,
showDelay: 0
);
var params = 'login': ($scope.user.username), 'password': ($scope.user.password)
console.log("params... " + JSON.stringify(params));
QB.users.create(params, function(err, user)
if (user)
console.log("successful user.create... " + JSON.stringify(user));
var jid = user.id + "-23837" + "@chat.quickblox.com";
console.log(user.login + "'s jid is......" + jid);
var chatparams = 'jid': jid, 'password': ($scope.user.password);
QB.chat.connect(chatparams, function(err, roster)
console.log("err from qb.chat.connect... " + JSON.stringify(err));
console.log("roster from qb.chat.connect .... " + JSON.stringify(roster));
);
else
console.log(JSON.stringify(err));
if (err.message == "Unprocessable Entity")
QB.login(params, function(err, user)
if (user)
console.log("Logged into QB with " + JSON.stringify(user));
var jid = user.id + "-23837" + "@chat.quickblox.com";
console.log(user.login + "'s jid is......" + jid);
var chatparams = 'jid': jid, 'password': ($scope.user.password);
QB.chat.connect(chatparams, function(err, roster)
console.log("stringifying the err... " + JSON.stringify(err));
console.log("stringifying the roster... " + JSON.stringify(roster));
);
else
console.log(JSON.stringify(err));
);
);
我在控制器中运行的代码......它仍在随机发生,有时会连续出现很多错误,有时它会出错,然后工作,然后出错,然后工作,工作,然后出错工作等等。
【问题讨论】:
【参考方案1】:啊,原来问题出在 Angular JS 上。我将参数从接受回调中的 $scope.user.password 更改为使用创建的参数对象中的 params.password 进入第一个回调,并且它现在每次都有效。
收到的错误代码是正确的,这是另一个教训,永远不要停止对特定趋势的调查,直到你真正做到了。
不是假设密码是正确的,因为它每次都成功完成了第一个 QB 函数,进一步的调查会表明 angular 未能将变量提供给 chatparams 对象,因此字段密码不包含在其中- 只需 jid: '4353598-350340395@chat.quickblox.com'。
【讨论】:
【参考方案2】:“未经授权”和“密码未验证”是什么意思-您的聊天登录密码不正确。
也许您是通过 API 或在管理面板中更改的?
如果它有时有效 - 你可以发布你的代码,将尝试验证可能是什么原因
【讨论】:
我很肯定细节是正确的。甚至当我将它放入安卓设备并从拼写建议中输入单词时,它甚至会发生,并且没有任何额外的空格。信息是相同的,但我得到了不同的回复...当我开始处理这个问题时会再次检查,但现在我非常有信心登录详细信息是正确的。 是的,这不是问题。每次它成功登录到 QB,但有时会为 QB.chat 回调给出此错误,并且密码相同,QB.chat 的登录名是用户的 jid 而不是正常的 qb 登录名。密码正确以上是关于QuickBlox QB.chat.connect 突然给出令人费解的身份验证错误代码 401的主要内容,如果未能解决你的问题,请参考以下文章
无法解决:com.quickblox:quickblox-android-sdk-chat:2.6.1
QBRoomChatManager 类在以后的 Quickblox 库中不存在 - quickblox-sdk-release-2