Articles of firebase authentication

Android身份validation错误:“GetToken失败,状态代码为:INVALID_AUDIENCE”

关于这个模糊的错误代码已经有几个问题,但是没有人为我解决这个问题,所以我会再试一次。 首先,这是用于登录的样板代码。 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestServerAuthCode(“web app client ID copied from Dev API Console”, false) .build(); mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth .GOOGLE_SIGN_IN_API, gso).build(); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); 使用此代码,我得到一个对话框,可以选择适当的用户帐户。 好极了! 但是,然后我在onActivityResult中获取了一个已取消的代码,因此我检查了logcat并注意了标题中的错误消息。 然后我搜索有这个问题的其他人,但是无法弄清楚我的问题是什么。 所以让我们从其他post中查看常见问题。 Firebase控制台显示我的应用程序已使用正确的SHA-1和SHA-256指纹进行了注册 发布和调试版本都使用相同的密钥库 在Google API管理器中,我的“OAuth许可屏幕”已配置完毕 我还validation了授权重定向URI的域名 我已经重新下载了Firebase GoogleServices.json文件,只是为了确定 没有包名称问题。 实际上,Firebase Analytics在这个应用程序中运行得很好 在Play商店开发控制台中,我的OAuth客户端显示在“设置 – > API访问”中 我的Firebase项目在Play商店开发控制台“关联帐户”设置部分中链接 我等了10个小时,只是为了看看Google的后端是否需要时间来设置它 对于可搜索性,在标题中的logcat错误消息之后,我得到以下logcat打印。 你有错误的OAuth2相关配置,请检查。 […]

Firebase Android Auth对象没有回调触发

我一直在浏览Firebase文档,在我的Android应用程序中设置用户身份validation系统。 但是出于某种原因,它看起来不像我的FirebaseAuth对象上运行的任何回调! 例如,按照此处的说明设置Facebook身份validation private void handleFacebookAccessToken(AccessToken token) { Log.d(“AUTH”, “handleFacebookAccessToken:” + token.getToken()); // … AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); Log.d(“AUTH”, “Credential: “+credential); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { Log.d(“AUTH”, “signInWithCredential:onComplete:” + task.isSuccessful()); // If sign in fails, display a message to the user. If sign in succeeds // the auth […]

Firebase使用Google帐户覆盖登录

在文档中似乎没有提到这一点,我发现的只有这个和这个 ,我想在此证实: 如果现有帐户具有相同的电子邮件地址但使用其他凭据(例如密码或不可信提供商)创建,则出于安全原因,将删除先前的凭据。 如果用户通过Facebook或电子邮件/密码登录,稍后通过Google登录,则他们的帐户登录方式将转换为Google。 它只发生在Google上,并且只有一个帐户的设置才有效。 它是否应该是这样的,有什么办法可以阻止它吗?

Android Firebase Rest API身份validation

我目前正在使用Firebase Realtime数据库开发应用程序,但是我选择省略使用SDK从数据库中检索数据。 原因是我不希望我的代码与FireBase紧密相关,因为一旦构建应用程序,api本身将转移到基于自定义rest的api。 我根据文档使用REST和Firebase实现了api调用,没有问题 – POST,GET,DELETE等。 我遇到的问题是,如果我在数据库上启用任何types的身份validation,根据我需要发送带有请求的“access_token”的文档,但是我不知道从哪里检索它。 firebaseUser.getToken(true)返回看起来像JWT令牌的内容,如果我将其作为”access_token”发送,则无法识别该令牌。 我得到401 Unauthorized 我还按照说明设置了一个服务帐户,该帐户似乎生成了一个有效的令牌,但它并没有唯一地标识用户。 所以我的问题是,任何人都可以指出我如何获得所需的访问令牌,以识别哪个用户正在访问该API? 我的Firebase项目支持的登录选项是Google,Facebook和Twitter。

在匿名登录期间,Firebase在Android上崩溃

我在市场上约有70%的设备遭遇此次崩溃。 然而,它在测试过程中从未出现过。 public class MyApp extends Application{ public void onCreate() { super.onCreate(); FirebaseDatabase.getInstance().setPersistenceEnabled(true); FirebaseAuth.getInstance().signInAnonymously(); } } 这是错误。 Fatal Exception: java.lang.RuntimeException: Unable to create application com.mycompany.myapp.activities.MyApp: java.lang.ClassCastException: com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c com.google.android.gms.internal.hc cannot be cast to com.google.firebase.auth.c at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4927) at android.app.ActivityThread.access$1500(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5633) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) […]

android google登录后如何初始化firebase?

我想尝试将我的原生android firebase开发保持在最低限度,以便当我准备移植到IOS / web时,我不会在那里做很多事情。 现在firebase的Javascript不允许从Android登录谷歌,这可以从插件中处理。 但我坚持的是如何基于Java Android Google登录初始化firebase。 所以这就是我想要实现的目标: Cordova将Java-Android-Native登录称为google —>基于此,我将如何初始化firebase? 这个插件可以让我本地登录google: https : //www.npmjs.com/package/cordova-plugin-googleplus 但我想我需要身份validation令牌? 令牌ID? firebase.auth().signInWithCredential(credential).catch(function(error) { } else { console.error(error); } }); 这可以给我上面要求的吗? https://developers.google.com/identity/sign-in/android/sign-in GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 更新1:只想分享更多信息。 当用户在Android上通过谷歌登录时,我有以下对象 GoogleSignInAccount https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount 它有public String getIdToken () & public String getServerAuthCode ()为什么不能用这些来使用JS来validationfirebase? 更新2:Faraz提供的答案似乎正在起作用。 以下是函数signInWithCredential参考https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential 感谢您的帮助。

使用firebase添加额外的用户信息

我已将firebase auth与我的Android应用程序集成。 让我们说用户有一封邮件abc@abc.com 。 我想为用户添加一些额外的信息,比如用户名,职业和地址。 如何将用户auth表与我的Android应用程序连接起来呢? 我需要为此编写任何API吗?

在Android应用上获取id令牌并在后端服务器上validation它(如何使用id令牌?)

我正在开发一个Android应用程序,它使用来自我自己的REST API服务器的数据。 我想使用Firebase身份validation,因为它允许用户以非常简单的方式使用Google,Facebook,Twitter …进行登录。 但我不确定如何使用ID令牌: 因为ID令牌有到期日期,我应该在客户端应用程序中的每个请求上调用getToken方法,所以我确定我每次都发送一个有效的令牌吗? 每次收到客户端应用程序的请求时,我应该在服务器中调用verifyIdToken吗? 我不知道这些方法(getToken和verifyIdToken)是做什么的,并且因为它们是异步的,我担心它们会在每次调用时向Firebase服务器发出请求。 所以我认为在我的每个请求中向Firebase服务器发出2个请求是不可取的…

使用Firebase for Android更改密码

我想为我的应用程序实现更改密码function。 我在build.gradle文件中包含了com.google.firebase:firebase-auth:9.0.2 ,到目前为止,在我尝试实现更改密码function之前,一切正常。 我发现FirebaseUser对象有一个updatePassword方法,该方法将新密码作为参数。 我可以使用这种方法并自己实现validation。 但是,我需要用户当前的密码与输入的密码进行比较,我找不到获取密码的方法。 我还在Firebase对象上find了另一种方法 ,它采用旧密码,新密码和处理程序。 问题是我还需要包含com.firebase:firebase-client-android:2.5.2+来访问这个类,当我尝试这个方法时,我会遇到以下错误: 在console.firebase.google.com上创建的项目必须使用firebase.google.com/docs/auth/中提供的新Firebase身份validationSDK 觉得我在这里遗漏了一些东西。 实施此建议的方法是什么? 什么时候使用什么依赖?

使用Facebook登录集成(Firebase 3.0)的Firebase Auth用户的空电子邮件字段

我已成功部署了https://firebase.google.com/docs/auth/android/facebook-login中的教程代码,以便将Firebase Auth登录与Facebook集成。 用户已在Firebase Auth控制台中成功创建。 但是,我注意到用户对象中的电子邮件字段为空( – )。 奇怪的是,我使用获取的令牌使用GraphRequest直接从提供者结果对象中成功检索了电子邮件信息。 根据我阅读的文档( https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseUser.html#getEmail() ),应从登录提供商填充电子邮件字段。 一些额外的奇怪行为: 成功登录后,将调用onAuthStateChanged两次。 firebaseAuth.getCurrentUser()。getProviderId()的值在两种情况下都是Firebase 我尝试从FirebaseUser对象user.getProviderData()列出提供程序。 我有两个提供商:firebase和facebook.com 当我尝试使用FirebaseUser.updateEmail(event.getEmail())更新电子邮件时,出现此错误:发生了内部错误。 [EMAIL_EXISTS] 有什么我想念或做的我做错了吗? 这是我的代码: public class LoginActivity extends AppCompatActivity { private static final String TAG = “LOGIN_ACTIVITY”; private static final int RC_SIGN_IN = 777; private EventBus eventBus; private SweetAlertDialog pDialog; private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private CallbackManager mCallbackManager; […]