当前位置: 首页 > 知识库问答 >
问题:

使用空令牌的Firebase电话身份验证响应

薛经艺
2023-03-14

我正在按照以下官方链接将Digits身份验证迁移到Firebase身份验证:

  • https://firebase.google.com/support/guides/digits-android
  • https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md

<code>谷歌服务。从Firebase控制台导出的json文件集成在项目中。

我在UI中使用插入式解决方案,这是我的代码:

startActivityForResult(
                AuthUI.getInstance()
                        .createSignInIntentBuilder()
                        .setProviders(Arrays.asList(
                                new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build())).build(), RC_SIGN_IN);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        // Successfully signed in
        if (resultCode == RESULT_OK) {
            IdpResponse idpResponse = IdpResponse.fromResultIntent(data);

            //Here retreive the token from the response
            idpResponse.getIdpToken();
            finish();
            return;
        } else {
            // Sign in failed
            if (response == null) {
                // User pressed back button
                return;
            }

            if (response.getErrorCode() == ErrorCodes.NO_NETWORK) {
                Toast.makeText(this, getString(R.string.connection_error), Toast.LENGTH_SHORT).show();
                return;
            }

            if (response.getErrorCode() == ErrorCodes.UNKNOWN_ERROR) {
                Toast.makeText(this, getString(R.string.error_default), Toast.LENGTH_SHORT).show();
                return;
            }
        }

        Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
    }
}

这是build.gradle有趣的部分:

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.1'

}

compile 'com.firebaseui:firebase-ui-auth:2.3.0'
compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:support-v4:26.0.1'
compile 'com.android.support:recyclerview-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
compile 'com.android.support:support-core-utils:26.0.1'
compile 'com.android.support:support-annotations:26.0.1'
compile 'com.android.support:percent:26.0.1'

当激发onActivityResult时,响应成功,但令牌始终为空。

我不知道这个身份验证提供者,这个令牌是否总是空的,或者我做错了什么。

共有2个答案

车胤运
2023-03-14

如果登录成功,您应该有一个Firebase Auth用户可用。在这种情况下,没有IDP令牌,您应该能够检索用户:

FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
阮飞翔
2023-03-14

您需要明确请求令牌。

请参阅 https://firebase.google.com/docs/auth/admin/verify-id-tokens:

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getToken(true)
 类似资料:
  • 我正在尝试使用以下链接将firebase电话号码认证集成到我的应用程序中:https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md 我正在使用带有Firebase-UI的即插即用解决方案。似乎电话号码身份验证成功,但生成的令牌

  • keytool-list-v-keystore my_keystore.jks

  • 但我有以下错误 {“错误”:{“代码”:403,“消息”:“来自此ios客户端应用程序的请求被阻止。”,“错误”:[{“消息”:“来自此ios客户端应用程序的请求被阻止。”,“域”:“全局”,“原因”:“禁止”}],“状态”:“允许_Denied”}} 我已经实现了这一点,正如文档中所示。 下面是AppDelegate.swift的代码: 下面是ViewController.swift的代码:

  • 问题内容: 我正在尝试将我的电话号码与我的电子邮件密码身份验证相关联。所以我使用以下步骤建立我的注册: 用户输入电子邮件地址和密码。 然后我打电话 那么我需要将当前帐户与电话号码相关联,因此我正在使用 但是,我没有看到任何链接。在我的Firebase控制台中创建的2个帐户和当前用户的详细信息中只有电话号码。当我再次使用电子邮件和密码登录并检查用户详细信息时,电话号码不存在! 请在下面找到我的代码:

  • 电话身份验证失败,出现以下异常: PlatformException(ERROR_SESSION_EXPIRED,sms代码已过期。请重新发送验证码重试。,null) 但如果我使用的电话号码不同于我的电话号码,它就会起作用。我从play store中添加了SHA-1和SHA-256指纹到firebase,并替换了google-services.json。 这是我的代码:

  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已