3

そのため、電話番号のみを使用する主要な要件で、firebase を使用してサインインとサインアップのフローを作成しようとしています。

しかし、createUserWithEmailAndPassword のみを使用してユーザーを登録することしかできないことがわかりました。問題は、電話番号を使用してユーザーをサインアップする方法です。

そうでない場合、firebase は電話番号を使用してどのようにユーザーにサインインしますか?

電話番号とotp 2ケースを入力した後

  1. ユーザーがすでに存在する場合、彼は自分のダッシュボードに移動します
  2. 彼がアプリを初めて使用する場合は、サインアップの詳細ページに移動してからダッシュボードに移動します。
4

1 に答える 1

0

アプリに電話番号サインインを追加する最も簡単な方法は、FirebaseUI を使用することです。これには、電話番号サインインのサインイン フローを実装するドロップイン サインイン ウィジェットと、パスワードベースのフェデレーション サインが含まれています。 -の。

うまくいけば、Firebase の依存関係と有効な認証が追加されました。この後、このコードがあなたを導きます:

  PhoneAuthOptions options = 
  PhoneAuthOptions.newBuilder(mAuth) 
      .setPhoneNumber(phoneNumber)       // Phone number to verify
      .setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
      .setActivity(this)                 // Activity (for callback binding)
      .setCallbacks(mCallbacks)          // OnVerificationStateChangedCallbacks
      .build();
  PhoneAuthProvider.verifyPhoneNumber(options);   

検証が成功した後にユーザーをリダイレクトする場合、Firebase には必要なメソッドがプリロードされています。

@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
    // This callback will be invoked in two situations:
    // 1 - Instant verification. In some cases the phone number can be instantly
    //     verified without needing to send or enter a verification code.
    // 2 - Auto-retrieval. On some devices Google Play services can automatically
    //     detect the incoming verification SMS and perform verification without
    //     user action.
    Log.d(TAG, "onVerificationCompleted:" + credential);

    signInWithPhoneAuthCredential(credential);
}

@Override
public void onVerificationFailed(FirebaseException e) {
    // This callback is invoked in an invalid request for verification is made,
    // for instance if the the phone number format is not valid.
    Log.w(TAG, "onVerificationFailed", e);

    if (e instanceof FirebaseAuthInvalidCredentialsException) {
        // Invalid request
        // ...
    } else if (e instanceof FirebaseTooManyRequestsException) {
        // The SMS quota for the project has been exceeded
        // ...
    }

    // Show a message and update the UI
    // ...
}

@Override
public void onCodeSent(@NonNull String verificationId,
                       @NonNull PhoneAuthProvider.ForceResendingToken token) {
    // The SMS verification code has been sent to the provided phone number, we
    // now need to ask the user to enter the code and then construct a credential
    // by combining the code with a verification ID.
    Log.d(TAG, "onCodeSent:" + verificationId);

    // Save verification ID and resending token so we can use them later
    mVerificationId = verificationId;
    mResendToken = token;

    // ...
}
于 2020-12-12T05:14:13.483 に答える