Articles of firebase authentication

获取’E / TokenRequestor:您有与OAuth2相关的错误配置。 详细错误:INVALID_AUDIENCE’即使在提供准确的客户ID之后也是如此

我在我的应用中提供了GoogleSignIn选项。 这是我的代码: public class SignupActivity extends AppCompatActivity { private static final int RC_SIGN_IN = 1; GoogleApiClient mGoogleApiClient; FirebaseAuth mAuth; TextView appName; ProgressDialog signinProgressDialog; CoordinatorLayout coordinatorLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // setSupportActionBar(toolbar); signinProgressDialog = new ProgressDialog(SignupActivity.this); coordinatorLayout = (CoordinatorLayout) findViewById(R.id.signupCoordinatorLayout); // Configure Google Sign In GoogleSignInOptions […]

Google Firebase退出并忘记Android应用中的用户

当我调用mFirebaseAuth.signOut()或mFirebaseUser.delete()我的FirebaseAuth.AuthStateListener()工作正常并在onAuthStateChanged返回null作为FirebaseUser实例,我刷新UI并显示“使用Google登录”按钮。 但是当我想再次登录时,我没有看到popup的用户(我的设备上有2个用户,附加了图像)。 该应用仅在首次登录时显示此popup窗口,之后它使用相同的用户。 如果我在设置屏幕上清除应用程序的数据,我将能够再次看到此popup窗口。 我的问题是如何在每次退出后显示此popup窗口。 我按下登录按钮时运行此代码: GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, FirebaseActivity.REQUEST_SIGN_IN); 在onActivityResult() ,我得到了一个GoogleSignInResult的实例,所以在调用startActivityForResult()之后我需要的一切都会发生。

使用Firebase在GoogleApiClient中出现罕见的NullPointerException

我使用GoogleApiClient使用他们的Google帐户登录用户。 基本上,我正在使用Firebase Auth与Google登录。 但我每天都会在某些设备上崩溃 。 当我在我自己的一些设备(OnePlus 3,Nexus 5X,Moto G等)上进行测试时,我从未看到过这种情况。 Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String java.lang.String.toLowerCase(java.util.Locale)’ on a null object reference at com.google.android.gms.internal.zzamy.zzd(Unknown Source) at com.google.android.gms.internal.zzamv.n(Unknown Source) at com.google.android.gms.internal.zzamv.zza(Unknown Source) at com.google.android.gms.internal.zzamv$2.run(Unknown Source) at java.lang.Thread.run(Thread.java:818) 这就是我正在做的实例化GoogleApiClient。 我没有看到正常情况下的崩溃,但在某些设备中我看到了这一点。 这是我在代码中所做的事情, String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY); GoogleSignInOptions googleSignInOptions; googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(mClientId) .requestEmail() .build(); mGoogleApiClient […]

为什么我会收到com.google.android.gms.common.api.ApiException:10:?

private void handleSignInResult(Task completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); //exception is here // Signed in successfully, show authenticated UI. System.out.println(“google token —> ” + account.getIdToken()); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information about this […]

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 感谢您的帮助。