当我signInWithEmailAndPassword()用来登录onAuthStateChanged()总是火两次.
我非常确定只在firebaseAuth, and I have the code inonStop()中添加一次监听,以便在此之后删除监听器.
有谁知道如何解决这个问题?
我的代码:
public class SignInActivity extends BaseActivity implements
View.OnClickListener,
GoogleApiClient.OnConnectionFailedListener{
private static final String PREF_KEY_USER_EMAIL = "User_Email";
private static final int RC_SIGN_IN = 1111;
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener authStateListener;
private DatabaseReference firebaseDbReference;
private TextView fieldEmail;
private TextView fieldPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
getSupportActionBar().hide();
firebaseAuth = FirebaseAuth.getInstance();
firebaseDbReference = FirebaseDatabase.getInstance().getReference();
fieldEmail = (TextView) findViewById(R.id.field_email);
fieldPassword = (TextView) findViewById(R.id.field_password);
String userSavedEmail = getPreferences(MODE_PRIVATE).getString(PREF_KEY_USER_EMAIL, …Run Code Online (Sandbox Code Playgroud) 我们在 Firebase Auth 中使用自定义声明来管理 Firebase 中的访问权限并允许自定义 UI 体验。
我们现在正在处理用户管理部分,我们找不到通过自定义声明检索用户的方法。
例如,用户属于一个组织并具有不同的访问级别 - 管理员或用户。我们需要允许组织的管理员查看他们组织的所有用户。
我们希望避免使用单独的数据库来管理组织用户,以免数据加倍。
是否可以?我们可以在按特定自定义声明过滤所有 Auth 用户的同时检索它们吗?
谢谢!
当我尝试进行电话身份验证时,出现以下错误。
W/BiChannelGoogleApi(12340): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzal@489
Run Code Online (Sandbox Code Playgroud)
我在 Stackverflow 和其他地方检查了同样的错误,但没有在任何地方得到正确的解决方案。
pubspec.yml 中的更改
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
firebase_core: ^0.3.0+2 //new
firebase_auth: ^0.8.1+1 //new
Run Code Online (Sandbox Code Playgroud)
注意——添加了 //New 以突出我在上面文件中添加的行。
在app/build.gradle末尾添加以下行
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
android/build.gradle
buildscript {
ext.kotlin_version = '1.2.71'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.2.0'
}
}
allprojects {
repositories { …Run Code Online (Sandbox Code Playgroud) 我当时正在做一个学习项目,一切正常,但我将操作系统更改为 win11,同时擦除了所有以前的数据。
现在,在使用任何类型的登录后,Firebase 都会停留在“正在加载”状态。实时数据库数据也不会显示。等待大约 5-10 个小时后,身份验证有时会连续工作(可以多次登录、注销,直到再次运行应用程序),但数据库永远不会。
当我使用物理设备时一切正常。没有 firebase 的应用程序在模拟器上运行良好。互联网连接正常。不起作用的示例应用程序: https:
//github.com/firebase/quickstart-android
我有:
我有时遇到的唯一错误是:
E/FirebaseInstanceId:绑定到服务失败
,并且当我第一次使用新模拟器时出现此错误:
E/FirebaseMessaging:硬故障异常时主题同步或令牌检索失败:java.util .concurrent.ExecutionException:java.io.IOException:AUTHENTICATION_FAILED。不会重试该操作。
E/FirebaseInstanceId:主题同步或令牌检索因硬故障异常而失败:AUTHENTICATION_FAILED。不会重试该操作。
E/FA:缺少 google_app_id。Firebase 分析已禁用。
E/FA:无法上传。应用程序测量已禁用
对我来说,似乎有什么东西正在阻止(或真正减慢)android studio 模拟器和 firebase 之间的连接。
我将非常感谢任何形式的帮助,这对我的学习非常重要。
我希望在我的用户的帮助下对某些受某些规则保护的数据进行休息调用,因此我需要将令牌发送给我的请求.取决于firebase文档的哪个版本,有不同的方式:旧的和弃用的方式(https://www.firebase.com/docs/rest/api/):
'https://samplechat.firebaseio-demo.com/users/jack/name.json?auth=<TOKEN>'
Run Code Online (Sandbox Code Playgroud)
新方式和我引用文档(https://firebase.google.com/docs/reference/rest/database/user-auth#section-get):
使用访问令牌Database REST API将接受查询字符串或标头上的access_token = Authenticate:Bearer以使用服务帐户验证请求.
'https://samplechat.firebaseio-demo.com/users/jack/name.json?access_token=<TOKEN>'
Run Code Online (Sandbox Code Playgroud)
即使我在设置时使用了新的firebase控制台,即使我使用的令牌是使用新的Firebase sdk生成的,新的方式也不适用于我.有人知道为什么只有弃用的方式有效吗?我有兴趣将令牌放在我的请求的标题中,但不能这样做.
rest restful-authentication firebase firebase-authentication firebase-realtime-database
我Firebase在Android和Firebase Auth功能上使用.
我试着FirebaseAuth.signInWithEmailAndPassword,万一它失败了,我想知道"为什么signIn过程失败?"
该signInWithEmailAndPassword方法具有addOnFailureListenerAPI.我可以在回调方法中捕获Exception(也许FirebaseAuthException)onFailure.
auth.signInWithEmailAndPassword(loginRequest.id, loginRequest.password)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof FirebaseAuthException) {
((FirebaseAuthException) e).getErrorCode());
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道SignIn进程失败的原因.在onFailure.
我认为可以这样做:
e实例类型检查(e instanceOf FirebaseAuthInvalidUserException或FirebaseAuthInvalidCredentialsExceptionor ,,,)e.getErrorCode() 我不想打字检查(它很脏).
我更喜欢上面选择的方式.但我找不到e.getErrorCode()返回值集合的定义.例如ERROR_INVALID_EMAIL,ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL等等(它们在哪里定义?)
请告诉我哪个是检查原因的最佳方法Firebase auth failed.
谢谢.
我正在尝试使用swift和firebase在iOS项目中创建用户按钮时添加错误处理:
这是按钮的代码:
@IBAction func Register(sender: AnyObject) {
if NameTF.text == "" || EmailTF.text == "" || PasswordTF.text == "" || RePasswordTF == "" || PhoneTF.text == "" || CityTF.text == ""
{
let alert = UIAlertController(title: "?????", message:"??? ???? ???? ?? ?????? ????????", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "???", style: .Default) { _ in })
self.presentViewController(alert, animated: true){}
} else {
if PasswordTF.text != RePasswordTF.text {
let alert = UIAlertController(title: "?????", message:"????? ?????? ??? ?????????", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "???", style: .Default) { …Run Code Online (Sandbox Code Playgroud) 我正在使用Firebase的电子邮件和密码方法注册我的用户.像这样:
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser signed = task.getResult().getUser();
writeNewUser(signed.getUid());
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
updateUser(b);
}
}, 3000);
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
onSignupFailed();
}
}, 3000);
}
}
});
Run Code Online (Sandbox Code Playgroud)
用户的电子邮件成功注册后,我希望Firebase发送验证邮件.我知道这可以使用Firebase sendEmailVerification.除了发送此电子邮件之外,我希望在验证电子邮件之前禁用该用户的帐户.这也需要使用Firebase的isEmailVerified功能.但是,我没有成功让Firebase发送验证邮件,我无法弄清楚是否要禁用并启用发送验证邮件的帐户以及验证后.
Android Firebase的新蜜蜂; 我正在尝试Firebase身份验证,我正在尝试检查用户是否已登录以执行此操作我正在使用此简单代码:
null != mAuth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)
而这个返回true虽然我没有登录,但我已经启用annonymous登录,我认为这可能是问题,但是当我检查
mAuth.getCurrentUser().isAnonymous()我得到false.
检查mAuth.getCurrentUser()IDE显示: 
这里有任何指示.
创建新项目时,Firebase 在GCP API 凭证中自动生成浏览器 API 密钥。这与 Firebase Web 客户端 SDK 中设置的 API 密钥相同,并且是公开可用的。
默认情况下,密钥没有限制,因此很容易为该项目启用的每个 API 窃取配额。令人惊讶的是,我没有在 Firebase 文档中找到有关保护此密钥的信息。
所以我采取了两个额外的步骤来保护密钥:
我的问题主要与第 2-3 点有关。Firebase 的各种组件需要启用哪些 API 才能在网络上运行?