gpt4 book ai didi

android - 未调用 Firebase 自定义 token 身份验证回调

转载 作者:行者123 更新时间:2023-11-29 02:41:26 24 4
gpt4 key购买 nike

我尝试使用 Digits(短信/电话验证)进行身份验证,然后在 success() 的回调中调用 Firebase 自定义 token 身份验证。一切正常,Digits 工作 -> Firebase 发送身份验证并实际登录用户,但未调用 Firebase onComplete() 的回调。如果我不通过 Digits 直接调用 signInWithCustomToken(),它会按应有的方式工作,调用 onComplete() 等等。问题是什么? 这是我的 onCreate() 中的内容:

    AuthConfig.Builder builder = new AuthConfig.Builder();
builder.withAuthCallBack(new AuthCallback() {
@Override
public void success(DigitsSession session, String phoneNumber) {
signInWithCustomToken();
}

@Override
public void failure(DigitsException exception) {
}
});

authConfigDigits = builder.build();

Button digitsButton = (Button) findViewById(R.id.auth_button);
digitsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Digits.authenticate(authConfigDigits);
}
});

然后我有自定义 token 身份验证方法 signInWithCustomToken() 本身:

private void signInWithCustomToken() {

String customToken = "eyJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJodHRwczovL2lkZW50aXR5dG9vbGtpdC5nb29nbGVhcGlzLmNvbS9nb29nbGUuaWRlbnRpdHkuaWRlbnRpdHl0b29sa2l0LnYxLklkZW50aXR5VG9vbGtpdCIsImV4cCI6MTQ5Mzg0MDU5MiwiaWF0IjoxNDkzODM2OTkyLCJpc3MiOiJmaXJlYmFzZS1hZG1pbnNkay0xOXBqY0Btb3ZlY2VudHJhbC0zOGUzYS5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsInN1YiI6ImZpcmViYXNlLWFkbWluc2RrLTE5cGpjQG1vdmVjZW50cmFsLTM4ZTNhLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwidWlkIjoic29tZS11aWQifQ.QdyviQ8vMhpMF7VJP949PdjVBwqM4EbZGxJvhCQtsRloJdIc16FPBG_RrBp2wZivWC-z1TIx1yctdMVGsoDAk5ptp-HlNyp5n31DyfZriGgo8zbhWln4RGG4wGYb7hSxGpyvm4STOM9N7TBBKt4lCZFYdpHVbT2idhr0hipxKCC_Ubjhwbjsfxrj5h59GHSyAdjw_yigNBHEtvsUfdGfzwKn_EW5qm5OAA0icCiqjnvsvW5RkwWKo7kWxqZT87-BoHsf5JguFeLGs0Ow9lgxAS2mSuuvni5qiYdLZdOKhu204Ctsty1pyFYrAWwWdnSrTWJwdkBx9xPgsE5UlipkRQ";

mFirebaseAuth.signInWithCustomToken(customToken)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.e(TAG, "Task is successfull");
openMainActivity();
} else {
Log.e(TAG, "Task failed");
}
}
});
}

最佳答案

我暂时通过延迟 signInWithCustomToken() 的调用解决了这个问题。我不确定为什么它不起作用,可能是某种竞争条件,但正在改变:

@Override
public void success(DigitsSession session, String phoneNumber) {
signInWithCustomToken();
}

与:

 @Override
public void success(DigitsSession session, String phoneNumber) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//100ms delay
signInWithCustomToken();
}
}, 100);

}

解决了这个问题。如果有人能解释原因,我将不胜感激。

关于android - 未调用 Firebase 自定义 token 身份验证回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com