首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SDK文档中的“入门”连接到Quickblox后端?

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

Stack Overflow用户
提问于 2015-10-13 16:29:15
回答 1查看 592关注 0票数 0

我花了两天的时间试图理解和遵循Android中的“入门”部分(我是一个菜鸟,所以请慢慢来)。我还仔细阅读了Quickblox文档、堆栈溢出Quickblox &A和Quickblox示例代码。

请有人解释一下,我如何能够与Quickblox后端建立一个非常简单和基本的会话?

在自己尝试这样做的过程中,我遇到了/发现了以下几点:

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

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

对于上面的#1,它给出了以下代码:

代码语言:javascript
复制
QBSettings.getInstance().fastConfigInit("961", "PBZxXW3WgGZtFZv", "vvHjRbVFF6mmeyJ");

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

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

代码语言:javascript
复制
QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
    @Override
    public void onSuccess(QBSession session, Bundle params) {
        // success
    }

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

我还将其添加到我的OnCreate中。

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

代码语言:javascript
复制
// 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代码:

代码语言:javascript
复制
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();
            }
        });
    }
}

因此,当我运行它时,根据触发的吐司,应用程序会话无法创建。此外,应用程序发布的URL是:

代码语言:javascript
复制
https://api.quickblox.com/session.json?application_id=29430&auth_key=XNKu54nymZXFq3c&nonce=166079749&timestamp=1444750770&signature=a412ecb12db54842f6816968a734b4fc2626509d

答复是:

代码语言:javascript
复制
{"errors":["Token is required"]}

在Android中,唯一提到“令牌”的地方是:

还可以使用现有的QuickBlox令牌初始化SDK。当您构建一个大系统时,如果您拥有生成QuickBlox令牌的服务器端,它可能会很有趣,例如……

这意味着这个标记是不必要的。但很明显是这样。

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

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 16:43:59

第一次检查:互联网连接,您在您的舱单中有互联网许可吗?

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET"/>

您创建会话和用户的代码看起来很好,但是您只能在创建会话后注册!

使用您的代码,如下所示:

代码语言:javascript
复制
   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();
            }
        });


    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33107937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档