如何使用AuthUI.IdpConfig.PhoneBuilder()使用createSignInIntentBuilder()设置用户名

时间:2018-02-13 12:45:48

标签: android firebase firebase-authentication authorization

我正在使用 createSignInIntentBuilder()

尝试使用电话号码和用户名授权我的应用
import platform
import subprocess

def ping(host, network_timeout=3):
    """Send a ping packet to the specified host, using the system "ping" command."""
    args = [
        'ping'
    ]

    platform_os = platform.system().lower()

    if platform_os == 'windows':
        args.extend(['-n', '1'])
        args.extend(['-w', str(network_timeout * 1000)])
    elif platform_os in ('linux', 'darwin'):
        args.extend(['-c', '1'])
        args.extend(['-W', str(network_timeout)])
    else:
        raise NotImplemented('Unsupported OS: {}'.format(platform_os))

    args.append(host)

    try:
        if platform_os == 'windows':
            output = subprocess.run(args, check=True, universal_newlines=True).stdout

            if output and 'TTL' not in output:
                return False
        else:
            subprocess.run(args, check=True)

        return True
    except (subprocess.CalledProcessError, subprocess.TimeoutExpired):
        return False

我应该使用什么而不是 .alsoAddUsername()

1 个答案:

答案 0 :(得分:0)

电话Auth没有提供在登录时提示昵称的方法。但是您可以在用户登录后执行此操作。

正常签署用户:

startActivityForResult(
    AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(
            Arrays.asList(
                new AuthUI.IdpConfig.PhoneBuilder().build()))
        .setLogo(R.drawable.logo)
        .build(),
    SIGN_IN_REQUEST_CODE
);

然后在您的onActivityResult方法中,提示用户输入所需的昵称(为了这个,您肯定会使用EditText。)

最后,告诉Firebase使用该名称:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
        .setDisplayName(nickname)
        .build();

user.updateProfile(profileUpdates)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "User nickname is set!");
                }
            }
        });

然后,您可以使用以下代码访问当前用户的电话号码和显示名称(在任何活动中):

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String phone = user.getPhoneNumber();
String nickname = user.getDisplayName();