如何使用SDK文档中的“入门”连接到Quickblox后端?

时间:2015-10-13 16:29:16

标签: android quickblox

我花了2天的大部分时间尝试理解并按照Android SDK文档中的“入门”部分(我是一个菜鸟,所以请慢一点)。我一直在选择Quickblox API文档,Stack overflow Quickblox Q& A和Quickblox示例代码。

有人可以解释一下我如何用Quickblox后端建立一个非常简单和基本的会话吗?

我自己试图这样做,这就是我遇到/发现的:

在“使用入门”部分(http://quickblox.com/developers/Android)中,概述了以下步骤:

  
      
  1. 使用应用程序凭据初始化框架
  2.   
  3. 创建会话
  4.   
  5. 使用现有用户登录或注册新用户
  6.   
  7. 使用QuickBlox通信服务和任何数据实体(用户,位置,文件,自定义对象,推送等)执行操作。
  8.   

对于上面的#1,它提供以下代码:

QBSettings.getInstance().fastConfigInit("961", "PBZxXW3WgGZtFZv", "vvHjRbVFF6mmeyJ");

我将上述内容放在我活动的OnCreate方法中。

然后,对于#2,它说“要创建应用程序会话,请使用此代码:”

QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
    @Override
    public void onSuccess(QBSession session, Bundle params) {
        // success
    }

    @Override
    public void onError(List<String> errors) {
        // errors
    }
});

我还将其添加到我的OnCreate。

对于#3,我继续使用建议的代码。在这种情况下,我正在创建一个新用户:

// Register new user
final QBUser user = new QBUser("userlogin", "userpassword");

QBUsers.signUp(user, new QBEntityCallbackImpl<QBUser>() {
    @Override
    public void onSuccess(QBUser user, Bundle args) {
        // success
    }

    @Override
    public void onError(List<String> errors) {
       // error
    }
});

这是我完整的OnCreate代码:

public class ChatCategoryActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chat_category);

        Toast.makeText(getApplicationContext(), "Toast Test!",
                Toast.LENGTH_LONG).show();


        //Initialize quickblox framework
        QBSettings.getInstance().fastConfigInit("29430", "XNKu54nymZXFq3c", "3vy372mwtYwfJU7");

        //create a quickblox application session
        QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
            @Override
            public void onSuccess(QBSession session, Bundle params) {
                // success
                Toast.makeText(getApplicationContext(), "App session created!",
                        Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(List<String> errors) {
                // errors
                Toast.makeText(getApplicationContext(), "Failed to create app session!",
                        Toast.LENGTH_LONG).show();
            }
        });

        // Register new user
        final QBUser user = new QBUser("bob1", "bobobob1");

        QBUsers.signUp(user, new QBEntityCallbackImpl<QBUser>() {
            @Override
            public void onSuccess(QBUser user, Bundle args) {
                // success
                Toast.makeText(getApplicationContext(), "User signed up!",
                        Toast.LENGTH_LONG).show();
            }

            @Override
            public void onError(List<String> errors) {
                // error
                Toast.makeText(getApplicationContext(), "User sign-up failed!",
                        Toast.LENGTH_LONG).show();
            }
        });
    }
}

所以,当我运行它时,根据发出的吐司,应用程序会话无法创建。此外,应用发布的网址为:

https://api.quickblox.com/session.json?application_id=29430&auth_key=XNKu54nymZXFq3c&nonce=166079749&timestamp=1444750770&signature=a412ecb12db54842f6816968a734b4fc2626509d

响应是:

{"errors":["Token is required"]}

Android SDK文档中提到“令牌”的唯一地方是:

  

也可以使用现有的QuickBlox初始化SDK   令牌。在构建大型系统的情况下,这可能很有趣   你有服务器端生成QuickBlox令牌   示例...

这意味着令牌不是必需的。但显然是。

有人可以帮助我解决我所缺少的问题吗?我非常感谢我需要的代码,包括如何生成令牌(包括SHA签名)并使用它来初始化框架,创建会话,创建/登录用户等等。

非常感谢!

1 个答案:

答案 0 :(得分:1)

首先检查:互联网连接,您的清单中是否有互联网权限?

<uses-permission android:name="android.permission.INTERNET"/>

创建会话和用户的代码看起来不错,但只有在创建会话后才能注册!

使用您的代码看起来像:

   public class ChatCategoryActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Initialize quickblox framework
        QBSettings.getInstance().fastConfigInit("29430", "XNKu54nymZXFq3c", "3vy372mwtYwfJU7");

        //create a quickblox application session
        QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
            @Override
            public void onSuccess(QBSession session, Bundle params) {
                // success
                Toast.makeText(getApplicationContext(), "App session created!",
                        Toast.LENGTH_LONG).show();

                // Register new user
                final QBUser user = new QBUser("bob1", "bobobob1");

                QBUsers.signUp(user, new QBEntityCallbackImpl<QBUser>() {
                    @Override
                    public void onSuccess(QBUser user, Bundle args) {
                        // success
                        Toast.makeText(getApplicationContext(), "User signed up!",
                                Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(List<String> errors) {
                        // error
                        Toast.makeText(getApplicationContext(), "User sign-up failed!",
                                Toast.LENGTH_LONG).show();
                    }
                });
            }

            @Override
            public void onError(List<String> errors) {
                // errors
                Toast.makeText(getApplicationContext(), "Failed to create app session!",
                        Toast.LENGTH_LONG).show();
            }
        });


    }
}

如果凭据正常,则应创建新用户。 (出于安全原因,请不要忘记重置凭据并更新代码。)