1

我已将 Firebase 集成到我的应用中。我可以通过电子邮件/密码向 Firebase 进行身份验证。然后我初始化ChatSDKInterfaceManager.shared().a.startLoginActivity(this,true);从那里调用,该应用程序被默认聊天用户界面“接管”,该功能运行良好并ChatSDK.currentUser()返回预期的User对象。

我想用我自己的 UI 做同样的事情。要在 ChatSDK 初始化后对用户进行身份验证,我尝试过: ChatSDK.auth().authenticateWithCachedToken(); ChatSDK.auth().authenticate(AccountDetails.signUp(email,pwd)); ChatSDK.auth().authenticate(AccountDetails.username(email,pwd));

我的理解是,ChatSDK.thread().createThread(...)在我拥有有效的User. 但是,在每次身份验证尝试后,ChatSDK.currentUser()都是null.

查看 ChatSDK源代码文档,这似乎是身份验证机制。有什么我想念的吗?

4

1 回答 1

0

在此处输入图像描述 订阅是必要的,即使您不使用它。

        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());
            });
于 2018-08-22T15:31:22.290 回答