如何使用 ChatSDK 验证 Firebase 用户?
How to authenticate a Firebase user with ChatSDK?
我已将 Firebase 集成到我的应用程序中。我可以通过 email/password 使用 Firebase 进行身份验证。然后我初始化 ChatSDK 并调用 InterfaceManager.shared().a.startLoginActivity(this,true);
从那里,应用程序是 "taken over" 默认的聊天用户界面,功能很好, ChatSDK.currentUser()
returns预期 User
个对象。
我想用我自己的 UI 做同样的事情。要在 ChatSDK 初始化后对用户进行身份验证,我尝试过:
ChatSDK.auth().authenticateWithCachedToken();
ChatSDK.auth().authenticate(AccountDetails.signUp(email,pwd));
ChatSDK.auth().authenticate(AccountDetails.username(email,pwd));
据我了解,在获得有效的 User
之前,我无法执行 ChatSDK.thread().createThread(...)
。但是,在每次身份验证尝试之后,ChatSDK.currentUser()
都是 null
。
查看 ChatSDK source code and documentation,看来这就是身份验证机制。有什么我想念的吗?
订阅是必要的,即使您没有使用它。
ChatSDK.auth()
.authenticateWithCachedToken()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action() {
@Override
public void run() throws Exception {
Log.d("Success","We're in!");
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("Err",throwable.toString());
}
});
另外,这里有一些代码可以用已知的用户 ID 启动一个新的聊天线程。
UserWrapper userWrapper = UserWrapper.initWithEntityId(firebaseUser.uid);
userWrapper.metaOn();
userWrapper.onlineOn();
User otherUser = userWrapper.getModel();
ProgressDialog pd = new ProgressDialog(MainActivity.this);
pd.show();
ChatSDK.thread().createThread("", otherUser, ChatSDK.currentUser())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> {
pd.dismiss();
})
.subscribe(thread -> {
ChatSDK.ui().startChatActivityForID(getApplicationContext(), thread.getEntityID());
}, throwable -> {
ToastHelper.show(getApplicationContext(), throwable.getLocalizedMessage());
});
我已将 Firebase 集成到我的应用程序中。我可以通过 email/password 使用 Firebase 进行身份验证。然后我初始化 ChatSDK 并调用 InterfaceManager.shared().a.startLoginActivity(this,true);
从那里,应用程序是 "taken over" 默认的聊天用户界面,功能很好, ChatSDK.currentUser()
returns预期 User
个对象。
我想用我自己的 UI 做同样的事情。要在 ChatSDK 初始化后对用户进行身份验证,我尝试过:
ChatSDK.auth().authenticateWithCachedToken();
ChatSDK.auth().authenticate(AccountDetails.signUp(email,pwd));
ChatSDK.auth().authenticate(AccountDetails.username(email,pwd));
据我了解,在获得有效的 User
之前,我无法执行 ChatSDK.thread().createThread(...)
。但是,在每次身份验证尝试之后,ChatSDK.currentUser()
都是 null
。
查看 ChatSDK source code and documentation,看来这就是身份验证机制。有什么我想念的吗?
ChatSDK.auth()
.authenticateWithCachedToken()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action() {
@Override
public void run() throws Exception {
Log.d("Success","We're in!");
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.d("Err",throwable.toString());
}
});
另外,这里有一些代码可以用已知的用户 ID 启动一个新的聊天线程。
UserWrapper userWrapper = UserWrapper.initWithEntityId(firebaseUser.uid);
userWrapper.metaOn();
userWrapper.onlineOn();
User otherUser = userWrapper.getModel();
ProgressDialog pd = new ProgressDialog(MainActivity.this);
pd.show();
ChatSDK.thread().createThread("", otherUser, ChatSDK.currentUser())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> {
pd.dismiss();
})
.subscribe(thread -> {
ChatSDK.ui().startChatActivityForID(getApplicationContext(), thread.getEntityID());
}, throwable -> {
ToastHelper.show(getApplicationContext(), throwable.getLocalizedMessage());
});