Quckblox q-municate视频聊天'Token Required'

时间:2014-07-11 20:30:00

标签: android api quickblox

使用Quickblox的q-municate for android,并在视频聊天方面取得了成功。

我现在收到的错误只是说“需要令牌”。基于Quickblox文档,我知道会话在两小时后超时。

是否有关于如何纠正此问题的教程?

我已经阅读了这篇documentation,但我仍然对如何将这一切拼凑起来感到迷失。

我在QBAuthHelp.java文件中找到了这个代码,这是验证视频聊天的方法吗?

public QBUser login(QBUser inputUser) throws QBResponseException, BaseServiceException {
    QBUser user;
    QBAuth.createSession();
    String password = inputUser.getPassword();
    user = QBUsers.signIn(inputUser);
    String token = QBAuth.getBaseService().getToken();
    user.setPassword(password);
    AppSession.startSession(LoginType.EMAIL, user, token);
    return user;

感谢您的帮助,我在这里是一个完整的新手。

3 个答案:

答案 0 :(得分:3)

您需要使用QBAuth方法在您的应用中获取会话。 身份验证需要,因此您可以成功获取令牌并创建会话。

答案 1 :(得分:2)

启动您的应用程序时,在您注册后首先使用您的quickblox帐户验证您的应用程序。 1.在你的应用程序中创建应用程序类。

public class VideoChatApplication extends Application {

   @Override
   public void onCreate() {
   super.onCreate();

          QBSettings.getInstance().fastConfigInit(Constant.APP_ID,
        Constant.AUTH_KEY, Constant.AUTH_SECRET);
  }

}

2在清单文件中定义您的应用程序类

<application
android:name=".VideoChatApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<activity
    android:name=".Signup"
    android:label="@string/app_name"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity></application>

3首先,您需要在登录用户后注册用户

    private void createSession(final String login, final String password) {
    final QBUser user = new QBUser(login, password);
    QBAuth.createSession(login, password,
            new QBEntityCallbackImpl<QBSession>() {
                @Override
                public void onSuccess(QBSession session, Bundle bundle) {
                    user.setId(session.getUserId());

                    QBChatService.getInstance().login(user,
                            new QBEntityCallbackImpl<QBUser>() {

                                @Override
                                public void onSuccess(QBUser result,
                                        Bundle params) {

                                }

                                @Override
                                public void onSuccess() {
                                    // login success

                                }

                                @Override
                                public void onError(List errors) {
                                    Toast.makeText(this,
                                            "Error when login",
                                            Toast.LENGTH_SHORT).show();
                                    for (Object error : errors) {
                                    }
                                }
                            });

                }

                @Override
                public void onSuccess() {
                    super.onSuccess();
                }

                @Override
                public void onError(List<String> errors) {
                    Toast.makeText(this,
                            "Error when login, check test users login and password",
                            Toast.LENGTH_SHORT).show();
                }
            });
}

答案 2 :(得分:1)

您是否修改了Q-municate代码?

&#34;令牌要求&#34;意味着您正在尝试向QuickBlox后端发出请求(任何),但之前没有创建会话。

所有QuickBlox应用程序中的第一个请求应该是会话创建请求:

QBAuth.createSession(...

然后等待此请求完成并执行任何其他请求