gpt4 book ai didi

android - Firebase PhoneAuthProvider OTP

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

我制作了一个简单的聊天应用程序,我正在尝试使用 Firebases Phone Authentication 添加电话号码验证。我已成功添加所有依赖项并且数据库工作正常。但是当我点击发送 OTP 按钮时,我没有通过消息收到任何代码。

这是完整的类(class)。

package com.sharathnewdev.flashchatnewfirebase;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseException;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;

import java.util.concurrent.TimeUnit;

public class FB_Phone extends AppCompatActivity {
FirebaseAuth mAuth;
EditText et1, et2;
Button sendbutton, verifybutton;
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
String Verificationcode;
private static final String TAG = "FB_Phone";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fb_phone);
et1 = findViewById(R.id.mobileNUMBERTV);
et2 = findViewById(R.id.verifyTV);
sendbutton = findViewById(R.id.sendbutton);
verifybutton = findViewById(R.id.verifybutton);
sendbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
send_Sms();
}
});
verifybutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
verify();
}
});
mAuth = FirebaseAuth.getInstance();
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
}

@Override
public void onVerificationFailed(FirebaseException e) {

}

@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
Verificationcode = s;
Toast.makeText(getApplicationContext(), Verificationcode, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "The code has been sent to the user", Toast.LENGTH_SHORT).show();
}
};

}

public void send_Sms() {
String sent_code = et1.getText().toString();
Toast.makeText(getApplicationContext(), sent_code, Toast.LENGTH_SHORT).show();
PhoneAuthProvider.getInstance().verifyPhoneNumber(sent_code, 60, TimeUnit.SECONDS, this, mCallbacks);
}

public void signInWithPhone(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "The use has been successfully signed in", Toast.LENGTH_SHORT).show();
Intent chatIntent = new Intent(FB_Phone.this, MainChatActivity.class);
startActivity(chatIntent);
}
}
});
}

public void verify() {
String recieved_code = et2.getText().toString();
VerifywithPhone(Verificationcode, recieved_code);

}

public void VerifywithPhone(String verificationcode, String recievedcode) {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationcode, recievedcode);
signInWithPhone(credential);

}
}

在此,我在按下发送按钮时调用 send_sms 方法。但它只是不通过短信向我发送任何内容。我尝试调试它,但进程只是运行,没有任何反应

Logcat 显示此错误

java.lang.IllegalArgumentException:无法在没有 verificationProof、sessionInfo 或临时证明的情况下创建 PhoneAuthCredential。

请帮忙。我在这里做错了什么?

最佳答案

感谢大家的回复。我终于找到了问题所在。

这是因为我没有将我的应用程序 SHA-1 指纹添加到 firebase 控制台。

直到今天,我还没有检查 onVerificationFailed 方法是否存在任何潜在错误。

我添加了代码以在 OnverificationFailed 方法上显示 toast 消息。

我清楚地得到了错误,然后使用 this 将 SHA-1 指纹添加到控制台指导。

不使用它对我来说很愚蠢。

再次感谢。

关于android - Firebase PhoneAuthProvider OTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49035583/

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