【问题标题】:Quickblox: Cannot get users by tag_list. Error: Token is requiredQuickblox:无法通过 tag_list 获取用户。错误:需要令牌
【发布时间】:2017-03-14 15:07:56
【问题描述】:

我需要获取已进入特定房间的用户。房间名称在登录时输入到 tag_list 参数中。我调整了示例的代码以通过 tag_list 参数获取用户,但它说我需要一个令牌才能获得访问权限。谁能解释我没有复制的示例代码中发生了什么?这是我的代码:

$scope.callees = [$scope.user.id];
$scope.sessionType = QB.webrtc.CallType.VIDEO; // AUDIO is also possible
$scope.session = QB.webrtc.createNewSession($scope.callees, $scope.sessionType);
var mediaParams = {
    audio: true,
    video: true,
    options: {
        muted: true,
        mirror: true
    },
    elemId: 'localVideoEl',
    optional: {
        minWidth: 240,
        maxWidth: 320,
        minHeight: 160,
        maxHeight: 240
    }
};

QB.users.get(
    {
        'tags': [$scope.user.tag_list], 
        'per_page': 100
    }, 
function(err, result){
    if (err) {
        console.log(err);
    } else {
        console.log(result);
    }
});

【问题讨论】:

    标签: javascript angularjs quickblox


    【解决方案1】:

    嗯,Angular 用户...原来答案太令人兴奋了!!! (讽刺)事实证明,您必须将请求包装在另一个 QB.login 和另一个 QB.createSession 中......

    QB.createSession(function(err,result){
        if (result) {
            QB.login($scope.user, function(loginErr, loginUser){
                if (loginErr) {
                    console.log('log in error');
                    console.log(loginErr);
                }else {
    
    // HANDLE USERS                     
    
                    var params = {tags: [$scope.user.tag_list]};
                    QB.users.get(params, function(err, result){
                        if (err){
                            console.log(err);
                        }else{
                            console.log(result);
                        }
                    });
    
    // HANDLE CHAT  
    
                    QB.chat.connect(patient, function(err, res) {
                        if (err) { console.log(err); } else { console.log(res); }
                    });
    
    // HANDLE VIDEO 
    
                    $scope.callees = [$scope.user.id];
                    $scope.sessionType = QB.webrtc.CallType.VIDEO; // AUDIO is also possible
                    $scope.session = QB.webrtc.createNewSession($scope.callees, $scope.sessionType);
    
                    var mediaParams = {
                        audio: true,
                        video: true,
                        options: {
                            muted: true,
                            mirror: true
                        },
                        elemId: 'localVideoEl',
                        optional: {
                            minWidth: 240,
                            maxWidth: 320,
                            minHeight: 160,
                            maxHeight: 240
                        }
                    };
                    $scope.session.getUserMedia(mediaParams, function(err, stream) {
                        if (err){
                            //console.log(err);
                        }else{
                            //console.log(stream);
                        }
                    });
    
    
    
    
                }
            });
        }else if (err) {
            console.log(err);
        }
    });
    

    因此,尽管为拥有一个单页应用程序付出了所有努力,但您仍然必须在每个页面上登录...如果 Angular 社区中的任何人在每次路由更改后持续登录都有更好的答案,我不会讽刺地高兴!随意列出您的解决方案,我会将其标记为正确,而不是我的……因为我觉得,这不是真正的答案……

    【讨论】:

    • 那是因为您必须创建 QB.createSession 并获取会话令牌才能使用 QB API。否则你会得到'需要令牌'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2021-08-05
    • 2011-10-04
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多