代码之家  ›  专栏  ›  技术社区  ›  Dogemore

Firebase UI电子邮件链接登录意图额外为空

  •  0
  • Dogemore  · 技术社区  · 6 年前

        private void buildSignInIntentBuilder() {
    
            ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
                            .setAndroidPackageName(getString(R.string.packageName), true, null)
                            .setHandleCodeInApp(true)
                            .setUrl(getString(R.string.dynamic_link_url))
                            .build();
    
            List<AuthUI.IdpConfig> providers = Arrays.asList(
                    new AuthUI.IdpConfig.EmailBuilder()
                            .enableEmailLinkSignIn()
                            .setActionCodeSettings(actionCodeSettings)
                            .build(),
                    // new AuthUI.IdpConfig.EmailBuilder().setRequireName(false).build(),
                    new AuthUI.IdpConfig.PhoneBuilder()
                            .build(),
                    new AuthUI.IdpConfig.GoogleBuilder()
                            .build(),
                    new AuthUI.IdpConfig.FacebookBuilder()
                            .build());
    
            signInIntentBuilder = AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setIsSmartLockEnabled(false)
                    .setAvailableProviders(providers)
                    .setLogo(R.drawable.icon_forget_me_not_1);
        }
    
        private void catchEmailLinkSignIn() {
            Log.d(TAG, "Intent: " + getIntent().getExtras());
            if (AuthUI.canHandleIntent(getIntent())) {
                if (getIntent().getExtras() == null) {
                    return;
                }
    
                String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
                Log.d(TAG, "link: " + link);
                if (link != null) {
                    signInIntentBuilder.setEmailLink(link);
                }
            }
        }
    
        private void createCheckAndSigninListener() {
            // set firebase sign in listener
            mAuthStateListner = firebaseAuth -> {
                // Already logged in
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    Log.d(TAG, "user already signed in");
                    // Check user even if signed in to register him to database (if haven't)
                    FirebaseAuthHelper.getInstance().checkRegisterUser(user, this, CHECK_USER_DB);
                } else {
                    Log.d(TAG, "user hasn't signed in");
                    // Signed out or hasn't logged in
                    startActivityForResult(
                            signInIntentBuilder
                                    .build(),
                            RC_SIGN_IN
                    );
    
                }
            };
        }
    

    我已经与firebase主机建立了动态链接。并且能够在单击收到的电子邮件链接后重定向到相同的活动。

    String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
    Log.d(TAG, "link: " + link); // --> produces "link: null"
    

    显示尽管成功地获得了意图,但没有 EMAIL_LINK_SIGNIN 额外的 getExtras() . 我花了几个小时研究FirebaseUi的源代码,但没有找到常量在哪里 EMAIL_LINK_SIGN_IN 以及如何解析来自动态链接的意图。

    0 回复  |  直到 6 年前
        1
  •  2
  •   Ale4303    5 年前

    而不是使用 String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN); 使用 getIntent().getData().toString();

    推荐文章