اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

استخدم خاصية OTP من firebase لتحقق من ارقام المشتركين في تطبيقي وقد واجهتني مشكلة في حالة المستخدم تاخر فس ادخال رمز OTP قمت باضافة زر للقيام باعادة ارسال الرمز للمستخدم ولكن لم اعلم كيف يمكنني كتابة كود الاستعاده

انا استخدم هذا الكود الان كامل

 

public class VerifyPhoneActivity extends AppCompatActivity {


    private String verificationId;
    private FirebaseAuth mAuth;
    private ProgressBar progressBar;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_verify_phone);

        mAuth = FirebaseAuth.getInstance();

        progressBar = findViewById(R.id.progressbar);
        editText = findViewById(R.id.editTextCode);
        findViewById(R.id.tt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

//=======here I want add it==============///////////

            }
        });

        String phonenumber = getIntent().getStringExtra("phonenumber");
        sendVerificationCode(phonenumber);

        findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String code = editText.getText().toString().trim();

                if (code.isEmpty() || code.length() < 6) {

                    editText.setError("Enter code...");
                    editText.requestFocus();
                    return;
                }
                verifyCode(code);
            }
        });

    }

    private void verifyCode(String code) {
        PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
        signInWithCredential(credential);
    }

    private void signInWithCredential(PhoneAuthCredential credential) {
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {

                            Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

                            startActivity(intent);

                        } else {
                            Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
                });
    }

    private void sendVerificationCode(String number) {
        progressBar.setVisibility(View.VISIBLE);
        PhoneAuthProvider.getInstance().verifyPhoneNumber(
                number,
                20,
                TimeUnit.SECONDS,
                TaskExecutors.MAIN_THREAD,
                mCallBack
        );

    }

    private PhoneAuthProvider.OnVerificationStateChangedCallbacks
            mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

        @Override
        public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);
            verificationId = s;
        }

        @Override
        public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
            String code = phoneAuthCredential.getSmsCode();
            if (code != null) {
                editText.setText(code);
                verifyCode(code);
            }
        }

        @Override
        public void onVerificationFailed(FirebaseException e) {
            Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    };


}

 

Recommended Posts

  • 1
نشر

أهلا بك @مروان مروان3

يمكنك عمل ذلك من خلال عمل متغير فليكن بإسم mToken ثم عدل الميثود التالية إلى 

@Override 
  public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
  super.onCodeSent(s, forceResendingToken);
  verificationId = s; 
  mToken = forceResendingToken; 
   }

ثم نقوم بإستخدام الميثود التالية لإعادة إرسال الرمز مرة أخرى 

private void resendVerificationCode(String phoneNumber, PhoneAuthProvider.ForceResendingToken token) {
  PhoneAuthProvider.getInstance().verifyPhoneNumber(
    phoneNumber,
    60, 
    TimeUnit.SECONDS, 
    this, 
    mCallback, 
    token); 
}

ثم قم بعمل onClickListener ,وإستدعي الميثود عند ضغط الزر لإعادة إرسال الرمز  ونقوم بإستدعاء الميثود هكذا مع تمرير الرقم ومتغير mToken إليها 

resendVerificationCode(phonenumber,mToken);

 

  • 0
نشر
بتاريخ 19 ساعة قال احمد اليماني:

Alymanyahmd670@gmail.com 

اريد ارسال رمز التحقق من حسابي هاذا @ahmedibdalh تيلقرام رسالة نصية علاء هاذا الرقم +966578830851 او علا بريد الكتروني الخاص بي 

Screenshot_20250130_183252_org.telegram.messenger.jpg

السؤال غير واضح أرجو توضيحه.

الأمر لا يتم من هنا في الأكاديمية، بل من خلال منصة Firebase، أو من خلال المنصة التي تستخدمها فهي المسؤولة عن إرسال الرمز لك، سواء برمجيًا أو من خلال الواجهة الخاصة بالمنصة مثل التطبيق أو موقع الويب.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...