我花了2天的大部分时间尝试理解并按照Android SDK文档中的“入门”部分(我是一个菜鸟,所以请慢一点)。我一直在选择Quickblox API文档,Stack overflow Quickblox Q& A和Quickblox示例代码。
有人可以解释一下我如何用Quickblox后端建立一个非常简单和基本的会话吗?
我自己试图这样做,这就是我遇到/发现的:
在“使用入门”部分(http://quickblox.com/developers/Android)中,概述了以下步骤:
- 使用应用程序凭据初始化框架
- 创建会话
- 使用现有用户登录或注册新用户
- 使用QuickBlox通信服务和任何数据实体(用户,位置,文件,自定义对象,推送等)执行操作。
醇>
对于上面的#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×tamp=1444750770&signature=a412ecb12db54842f6816968a734b4fc2626509d
响应是:
{"errors":["Token is required"]}
Android SDK文档中提到“令牌”的唯一地方是:
也可以使用现有的QuickBlox初始化SDK 令牌。在构建大型系统的情况下,这可能很有趣 你有服务器端生成QuickBlox令牌 示例...
这意味着令牌不是必需的。但显然是。
有人可以帮助我解决我所缺少的问题吗?我非常感谢我需要的代码,包括如何生成令牌(包括SHA签名)并使用它来初始化框架,创建会话,创建/登录用户等等。
非常感谢!
答案 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();
}
});
}
}
如果凭据正常,则应创建新用户。 (出于安全原因,请不要忘记重置凭据并更新代码。)