使用 QuickBlox JavaScript SDK 的问题
Posted
技术标签:
【中文标题】使用 QuickBlox JavaScript SDK 的问题【英文标题】:Questions using QuickBlox JavaScript SDK 【发布时间】:2015-12-06 23:58:25 【问题描述】:我是 QuickBlox 的新手,有几个问题。我已经尝试通过 *** 和其他地方进行搜索,但似乎我的问题没有答案。 我很可能错过了 QuickBlox 文档中的某些内容(或者不知道有关 javascript 的某些内容)。
这与 JavaScript SDK 有关,因为我将使用它来实现聊天功能。这个想法是为使用 Laravel 构建的网络应用添加聊天功能。
我的第一个问题与初始化/授权有关。将 QuickBlox 身份验证密钥放在 JavaScript 文件中似乎非常不安全,因为可以通过浏览器的“查看源代码”选项轻松查看该文件。 您将如何隐藏这些敏感信息?
考虑到这一点,我已经考虑使用 php 来实现它。使用文档中的示例代码,我可以成功获取会话令牌。然后,我从 SDK 获得了聊天应用程序的副本,并一直在尝试将 PHP 代码集成到其中,以便使用我的 php 来获取令牌并将其传递给 QB.init,而不是使用 config.js。但这似乎行不通。 聊天应用程序就在那里。查看 Firebug 中的 JS 调试器,似乎抛出了一个异常:无法在没有应用凭据的情况下创建新会话。当我通过 PHP 得到它时,这让我感到困惑?为什么它会在 JavaScript 端失败?
谢谢。
【问题讨论】:
查看错误,据我所知,当您单击用户时会发生此异常(示例应用程序有用户 Quick 和用户 Blox,我已将用户详细信息更改为使用 2我在我的帐户中设置的用户)。因此,在单击第一个用户时,它会尝试登录该用户,我认为这就是异常的来源。 【参考方案1】:太棒了!我已经将此作为问题提交给他们:
https://github.com/QuickBlox/quickblox-javascript-sdk/issues/72
执行以下操作来解决您的问题(这是一种解决方法):
QB.init(token, false, false, QBConfig);
QB.service.getSession().application_id = your_app_id;
而且.. 我有一个 PR 的想法,但现在确实可以解决。
编辑:
试试下面...
var QBConfig =
chatProtocol:
active: 2
,
debug: !true,
webrtc:
answerTimeInterval: 30,
dialingTimeInterval: 5
,
creds:
appId: YOUR_APP_ID
;
QB.init(token, false, false, QBConfig);
QB.service.getSession().application_id = your_app_id; // probably still need this too
现在试试这个(假设您使用的是示例中的原始 JS):
function createSession()
//QB.createSession(caller, function(err, res)
//if (res)
connectChat();
//
//);
【讨论】:
我假设 QBConfig 只是一个带有其他选项等的数组?我已经把代码放进去,但还是得到了异常。 正确 -- 今天晚些时候我可以看看这个。他们的 JS SDK 不如他们的 android 流行,所以你会遇到更多的怪癖.. 并且..您使用的是最新版本? 1.17? 刚抓到 1.17。再次尝试,同样的异常。 哦,等等,我想我明白了!【参考方案2】:您对 PHP 插件的看法是正确的。它可以帮助您保护您的 QB 凭据。
其他解决方案是构建自定义脚本来构建您的凭据, 类似于混淆逻辑的东西。然后缩小此脚本以隐藏所有逻辑细节。
无论如何,如果您决定使用 QB.init("token"),那么您根本不需要使用 QB.createSession。 QB.init("token") 用于绕过 QB.createSession 调用。
【讨论】:
【参考方案3】:Javascript SDK 1.17.1 发布
http://quickblox.com/developers/Javascript#Framework_changelog
现在您可以使用会话令牌和应用程序 ID 初始化 SDK:
QB.init('1b785b603a9ae88d9dfbd1fc0cca0335086927f1', 3451);
【讨论】:
【参考方案4】:在遇到相同问题后,以下步骤对我有用:
-
从我的 Javscript 文件中,我使用 ajax 调用从 PHP/Server-Side 类中获取 AppId 和 Token,使用的文档位于:
https://docs.quickblox.com/reference/authentication#create-session
,更具体地说是创建用户会话
从 Quickblox 收到结果后,我将结果输出回 Javascript,并在 javascript 中设置 AppId、Token 和 UserId 变量:
var qb_app_id = 12333; var qb_token = "ABC123"; var qb_user_id = 1234567;
然后我打电话给QB.init(qb_app_id , qb_token , null, quickblox_config);
最后,我使用以下代码没有任何错误:
QB.chat.connect(userId: qb_user_id, password: qb_token, resource: 'practdashboard', function (err, roster)
if (err)
return;
);
请看这里: https://quickblox.com/developers/Web_XMPP_Chat_Sample#Guide:_Getting_Started_with_Chat_API 并专门参考 自定义资源
【讨论】:
以上是关于使用 QuickBlox JavaScript SDK 的问题的主要内容,如果未能解决你的问题,请参考以下文章
Quickblox:在Javascript中更改其他用户的密码
如何管理 quickblox 会话 Javascript SDK
通过 QuickBlox Javascript SDK 进行屏幕共享