【问题标题】:Questions using QuickBlox JavaScript SDK使用 QuickBlox JavaScript SDK 的问题
【发布时间】:2015-12-06 23:58:25
【问题描述】:

我是 QuickBlox 的新手,有几个问题。我已经尝试通过 StackOverflow 和其他地方进行搜索,但似乎我的问题没有答案。 我很可能错过了 QuickBlox 文档中的某些内容(或者不知道有关 JavaScript 的某些内容)。

这与 JavaScript SDK 有关,因为我将使用它来实现聊天功能。这个想法是为使用 Laravel 构建的网络应用添加聊天功能。

我的第一个问题与初始化/授权有关。将 QuickBlox 身份验证密钥放在 JavaScript 文件中似乎非常不安全,因为可以通过浏览器的“查看源代码”选项轻松查看该文件。 您将如何隐藏这些敏感信息?

考虑到这一点,我已经考虑使用 PHP 来实现它。使用文档中的示例代码,我可以成功获取会话令牌。然后,我从 SDK 获得了聊天应用程序的副本,并一直在尝试将 PHP 代码集成到其中,以便使用我的 php 来获取令牌并将其传递给 QB.init,而不是使用 config.js。但这似乎行不通。 聊天应用程序就在那里。查看 Firebug 中的 JS 调试器,似乎抛出了一个异常:无法在没有应用凭据的情况下创建新会话。当我通过 PHP 得到它时,这让我感到困惑?为什么它会在 JavaScript 端失败?

谢谢。

【问题讨论】:

  • 查看错误,据我所知,当您单击用户时会发生此异常(示例应用程序有用户 Quick 和用户 Blox,我已将用户详细信息更改为使用 2我在我的帐户中设置的用户)。因此,在单击第一个用户时,它会尝试登录该用户,我认为这就是异常的来源。

标签: javascript php quickblox


【解决方案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.createSessionQB.init("token") 用于绕过 QB.createSession 调用。

【讨论】:

    【解决方案3】:

    Javascript SDK 1.17.1 发布

    http://quickblox.com/developers/Javascript#Framework_changelog

    现在您可以使用会话令牌和应用程序 ID 初始化 SDK:

    QB.init('1b785b603a9ae88d9dfbd1fc0cca0335086927f1', 3451);
    

    【讨论】:

      【解决方案4】:

      在遇到相同问题后,以下步骤对我有用:

      1. 从我的 Javscript 文件中,我使用 ajax 调用从 PHP/Server-Side 类中获取 AppId 和 Token,使用的文档位于:https://docs.quickblox.com/reference/authentication#create-session,更具体地说是创建用户会话
      2. 从 Quickblox 收到结果后,我将结果输出回 Javascript,并在 javascript 中设置 AppId、Token 和 UserId 变量: var qb_app_id = 12333; var qb_token = "ABC123"; var qb_user_id = 1234567;
      3. 然后我打电话给QB.init(qb_app_id , qb_token , null, quickblox_config);
      4. 最后,我使用以下代码没有任何错误:
      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 并专门参考 自定义资源

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多