Firebase Android:电子邮件链接身份验证。 intent-filter无效

时间:2018-05-04 13:19:54

标签: android firebase firebase-authentication

我正在为Android实施firebase电子邮件链接身份验证机制。 我已经使用firebase的指南实现了它。 但是现在从电子邮件打开链接后,应用程序总是进入启动器活动。我无法调试此问题。 我也在我的应用程序中实现了动态链接,并且工作正常。 这是我的意图过滤器:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="http" />
    <data android:scheme="https" />
    <data android:host="www.example.com" />
    <data android:pathPrefix="/emailSignInLink" />

</intent-filter>

这是我正在使用的ActionCodeSetting:

ActionCodeSettings settings = ActionCodeSettings.newBuilder()
                .setAndroidPackageName(
                        BuildConfig.APPLICATION_ID,
                        false, /* install if not available? */
                        null   /* minimum app version */)
                .setHandleCodeInApp(true)
                .setUrl("https://www.example.com/emailSignInLink")
                .build();

任何人都可以弄清楚我在这里做错了什么或遗漏了一些东西

来自firebase的示例:

https://github.com/firebase/quickstart-android/blob/master/auth/app/src/main/AndroidManifest.xml

https://github.com/firebase/quickstart-android/blob/master/auth/app/src/main/java/com/google/firebase/quickstart/auth/PasswordlessActivity.java

编辑1:

我通过在我的启动器活动的onResume数据中记录intent数据进行检查,并且我获取了firebase身份验证返回的数据,因此我认为它看起来像动态链接的某种问题。

我的firebase邀请版本是15.0.0,因为15.0.2给了我错误(在文档中更新但我认为实际上没有发布。)

implementation "com.google.firebase:firebase-invites:15.0.0"

编辑2: 使用firebase示例进行无密码登录示例时,也会出现同样的问题。我在GitHub上创建了一个问题

https://github.com/firebase/quickstart-android/issues/488

2 个答案:

答案 0 :(得分:3)

我和您有同样的问题。 为了解决这个问题,我删除了pathPrefix并设置了我的域的url,而不是在意图过滤器中设置了动态链接,它似乎可以正常工作。

 <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <data
           android:scheme="https"
           android:host="myfirebaseId.firebaseapp.com"/>
      <category android:name="android.intent.category.BROWSABLE" />
      <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

希望它会有所帮助

答案 1 :(得分:2)

我和你有同样的问题。我已经解决了。 在清单中的 android:host 中,我确实放置了动态链接域!

https://firebase.google.com/docs/dynamic-links/android/receive中的家伙所说

请注意,必须将android:host设置为您的动态链接域, 而不是您的深层链接的域。

在清单中

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:host="myDynamicLink.page.link" android:scheme="https" />
</intent-filter>

在我的第二活动中:

ActionCodeSettings actionCodeSettiongs = ActionCodeSettings.newBuilder()
        .setAndroidPackageName(getPackageName(), false, null)
        .setHandleCodeInApp(true)
        .setUrl("https://auth.example.com")
        .build();

为我的电子邮件生成的URL如下: “ https://myDynamicLink.page.link/?link=https://myApp.firebaseapp.com...continueUrl%3Dhttps://auth.example.com ...”


P.S。这一切令人困惑,因为他们在其Guid中将链接“ https://example.com”而不是“ http://example.page.link