Articles of firebase authentication

如何使用Facebook身份validation确定Firebase用户是否已登录

我正在使用谷歌的firebase,我在用户身份validation方面遇到了一些麻烦。 使用Facebook登录后,我在AuthStateListener中获取FirebaseUser,但是如何通过facebook或不同方式检测此用户是否已记录? 更新正如@Frank van Puffelen所说FirebaseAuth.getInstance()。getCurrentUser()。getProviderId()应该返回“facebook”,但在我的情况下它会返回“firebase”。 现在我无法弄清楚这种行为的原因是什么。 当我收到FacebookToken时,我会这样做: AuthCredential credential = FacebookAuthProvider.getCredential(facebookToken.getToken()); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user […]

如何将firebase身份validation与Google App引擎端点集成

我正在为移动应用程序编写后端服务器。 后端在谷歌应用引擎上运行,用Java编写。 我希望用户能够使用Facebook等联合身份登录。 我看到谷歌通过firebase身份validation为移动应用程序支持这种身份validation。 将firebase身份validation与我当前的应用引擎端点集成的最佳方法是什么? 我已经使用了云平台的数据存储区,并且不希望使用firebase数据库,只使用身份validation方法。 谢谢。

首先使用Facebook进行身份validation然后使用Google导致Firebase for Android出现错误

据我在Firebase文档中了解,如果用户使用凭据对其帐户进行身份validation,则如果凭据尚未与其他凭据相关联,则应使用相同的凭据严格登录。 换句话说,如果我使用Google登录创建帐户,然后(退出后)尝试使用与Google凭据相同的电子邮件登录Facebook凭据,我应该在logcat中看到此exception: “已存在具有相同电子邮件地址但登录凭据不同的帐户。请使用与此电子邮件地址关联的提供商登录。” 是的,我毫不奇怪地得到了这个例外。 但是,如果我使用Facebook创建帐户,然后尝试使用Google凭据登录,则此帐户(Facebook)的提供商将转换为Google。 这次validation不会失败,但不是预期的结果。 我希望以某种方式将每个用户与特定凭据相关联。 我该怎么解决这个问题? 你可以看到下面的代码: public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener { private static final String TAG = “SignInActivity”; private static final int RC_SIGN_IN = 9001; private GoogleApiClient mGoogleApiClient; private FirebaseAuth mFirebaseAuth; private FirebaseAuth.AuthStateListener mFirebaseAuthListener; private CallbackManager mCallbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_in); // Facebook Login […]

Google使用Firebase登录Android – statusCode DEVELOPER_ERROR

我尝试在我的Firebase连接Android应用中实施Google登录。 当我运行应用程序并按下Google登录按钮时 – 没有任何反应。 我在onActivityResult中收到此错误: Status {statusCode = DEVELOPER_ERROR,resolution = null} 。 我的代码如下所示: protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()){ GoogleSignInAccount account = result.getSignInAccount(); String emailAddres = account.getEmail(); getGoogleQAuthToken(emailAddres); } } } private void getGoogleQAuthToken(final String emailAddres){ AsyncTask task = new AsyncTask() […]

在Android应用中使用Firebase(BaaS)存储电子邮件和密码时如何包含用户名?

Firebase createUser()方法接受电子邮件和密码字段,但是如果我还想让用户使用类似于Snapchat,Instagram,StackOverflow等的自定义用户名呢? 有没有办法修改现有方法以接受该字段,或者我是否需要手动推送和管理此信息,如果是这样的话? 这是我第一次尝试存储所需的用户信息: Firebase ref = new Firebase(firebaseURL); ref.createUser(email, password, new Firebase.ValueResultHandler<Map>() { @Override public void onSuccess(Map result) { System.out.println(“Successfully created user account with uid: ” + result.get(“uid”)); //Sign user in Firebase ref = new Firebase(firebaseURL); ref.authWithPassword(email, password, new Firebase.AuthResultHandler() { @Override public void onAuthenticated(AuthData authData) { System.out.println(“User ID: ” + authData.getUid() + “, […]

如何使用Google提供程序在Firebase上重新validation用户?

在Firebase中使用reauthenticate() 的示例仅显示如何重新validation使用电子邮件和密码签名的用户 : AuthCredential credential = EmailAuthProvider.getCredential(“user@example.com”, “password1234”); FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential); 我也知道如何使用Facebook Provider重新进行身份validation( credential = FacebookAuthProvider.getCredential(AccessToken.getCurrentAccessToken().toString()) )。 问题是Google API中没有等效方法来获取当前的访问令牌并最终获得AuthCredential 。 那么在这种情况下我将传递给getCredential() ?

Firebase Auth无法正常工作 – 模拟器上的“更新Google Play服务”消息(Android)

我正在尝试使用Firebase Auth服务和电子邮件和密码。 当我点击注册时,我在模拟器上收到一条提示: “Update Google Play services : Firebase Auth won’t run unless you update Google Play services” 当我查看日志时,我可以阅读这两行: DynamiteModule: Local module descriptor class for com.google.firebase.auth not found. GooglePlayServicesUtil: Google Play services out of date. Requires 9256000 but found 9080480 在SDK Manager中,Google Play服务是最新的。 我怀疑它是模拟器的一个问题,它不知何时是最新的。 我正在使用的模拟器:Nexus 5X API 21(使用Google API) 任何想法? 谢谢!

在Android中的Firebase Google身份validation中,首次检查用户是否首次通过身份validation

我在Android应用程序中使用Firebase身份validation,我使用Google帐户身份validation作为登录应用程序的选项。 如何知道用户是否首次登录该应用程序?

“无法获取提供商com.google.firebase.provider.FirebaseInitProvider”错误路径Android

我有一个连接到firebase的应用程序。问题是在设备中安装应用程序(在多个设备上工作)。我阅读了很多论坛,没有人工作。我在这里阅读,等等。谢谢! 错误在这里。 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.dev.ptruck, PID: 8833 java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn’t find class “com.google.firebase.provider.FirebaseInitProvider” on path: DexPathList[[zip file “/data/app/com.dev.ptruck-17.apk”],nativeLibraryDirectories=[/data/app-lib/com.dev.ptruck-17, /vendor/lib, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:5196) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4788) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4728) at android.app.ActivityThread.access$1500(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1343) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native […]

Firebase android:使用户名唯一

Parse将在年底关闭,所以我决定开始使用Firebase。 我需要实现一个包含3个字段的注册过程:电子邮件,用户名,密码( 电子邮件和用户名对我的应用必须是唯一的)。 由于Firebase没有像Parse那样提供管理用户名的简便方法,因此我决定只使用电子邮件/密码注册并保存一些额外的数据,如用户名。 这是我的用户数据结构: app : { users: { “some-user-uid”: { email: “test@test.com” username: “myname” } } } 但是,我想要做的是使用户名唯一,并在创建帐户之前检查它。 这些是我的规则: { “rules”: { “.read”: true, “.write”: true, “users”: { “$uid”: { “.write”: “auth !== null && auth.uid === $uid”, “.read”: “auth !== null && auth.provider === ‘password'”, “username”: {“.validate”: “!root.child(‘users’).child(newData.child(‘username’).val()).exists()”} } } } } […]