如何使用 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());
            });