2016-06-21 155 views
1

我一直在使用quickblox烦恼JS SDK群聊Quickblox群聊加入不工作

QB.chat.muc.join(dlg.xmpp_room_jid, function(){ 
console.log("Joined dialog " + dlg._id + " xmpp " + dlg.xmpp_room_jid); 
}) 

这是Quickblox的示例代码(使用Javascript SDK)。我检查了源代码,并与两个比较,但我没有发现任何区别。 最后,我已将app id,api key和一些凭据替换为正在运行quickblox的示例代码。并意识到示例应用程序不能使用我的凭据。 QB账号真的很重要吗?

回答

2

我已经想通了。 就我而言,原因来自您的会话创建API。 API文档说要使用[POST] /session.json,但具有此API的用户不能用于群聊。我使用/auth.json创建会话并使用注册RESTful API,现在它正在工作。 这不是帐户问题。 我认为他们应该检查该API或更新文档。

这是/auth.json api的用法。

function qbGenerateSession() { 
    // Generate signature 
    $nonce = rand(); 
    $timestamp = time(); // time() method must return current timestamp in UTC but seems like hi is return timestamp in current time zone 
    $signature_string = "application_id=" . QB_APP_ID . "&auth_key=" . QB_AUTH_KEY . "&nonce=" . $nonce . "&timestamp=" . $timestamp; 

    $signature = hash_hmac('sha1', $signature_string , QB_AUTH_SECRET); 

    //echo $signature; 
    //echo $timestamp; 

    // Build post body 
    $post_body = http_build_query(array(
     'application_id' => QB_APP_ID, 
     'auth_key' => QB_AUTH_KEY, 
     'timestamp' => $timestamp, 
     'nonce' => $nonce, 
     'signature' => $signature, 
     )); 

    // Configure cURL 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, 'https://api.quickblox.com/auth.json'); // Full path is - https://api.quickblox.com/auth.json 
    curl_setopt($curl, CURLOPT_POST, true); // Use POST 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body); // Setup post body 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Receive server response 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

    // Execute request and read response 
    $response = curl_exec($curl); 

    $token = null; 

    try { 
     $authInfo = json_decode($response); 
     $token = $authInfo->session->token; 
    } 
    catch (Exception $e) { 
     curl_close($curl); 
     return null; 
    } 

    // Close connection 
    curl_close($curl); 

    return $token; 
}