我正在使用 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()?
答案 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();