第一次开发Android应用程序。我在使用FaceBook和Google登录时试图让用户在我们的Firebase中注册。
到目前为止,我有登录电子邮件和密码。使用Facebook和Google登录。
问题是:您是否必须在firebase中注册用户(从谷歌和Facebook登录时)才能创建配置文件,例如图片?
代码的这个范围已经在我们项目的片段上实现:
onCreateView
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.google_credential))
.requestEmail()
.build();
//
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.enableAutoManage(getActivity(), new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
在onCreateView之外
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
Log.w(TAG, "Google sign in failed", e);
// ...
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d("MainACtivity", "firebaseAuthWithGoogle:" + acct.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("Main", "signInWithCredential:onComplete:" + task.isSuccessful());
// 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 can be handled in the listener.
if (!task.isSuccessful()) {
Log.w("MainAcitivyt", "signInWithCredential", task.getException());
Toast.makeText(getActivity(), "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
我使用google:https://firebase.google.com/docs/auth/android/google-signin关注注册FireBase指南
用户首次登录后,将创建一个新用户帐户并将其链接到用户登录的凭据(即用户名和密码,电话号码或身份验证提供商信息)。此新帐户存储为Firebase项目的一部分,可用于识别项目中每个应用程序的用户,无论用户如何登录。
这是在指南后复制的,我只是想在我的应用程序中注册的firebase上找到任何谷歌帐户。
编辑:
使用google注册时发现我的应用程序出错了:
这里的logcat:
2019-03-13 11:29:25.729 10997-10997/com.itcom202.weroom W/LoginFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 10:
at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:4)
at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source:8)
at com.itcom202.weroom.LoginFragment.onActivityResult(LoginFragment.java:194)
at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:160)
at android.app.Activity.dispatchActivityResult(Activity.java:7235)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4320)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4367)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
编码Firebase登录身份验证时需要考虑的事项
按照他们的Github回购中介绍的过程,您可以查看Firebase Quick Start Github回购中的一些工作样本活动。
您还需要在Firebase控制台中启用Facebook和Google登录。另一个重要的一点是,每次使用Firebase控制台进行更改时,请确保使用最新鲜的google-services.json文件。
最后,确保您在Firebase控制台中使用Firebase项目进行必要的调试并发布SHA1指纹设置,以便在您的应用进入Play商店时连接Firebase服务。
访问Firebase注册用户帐户
有关Firebase文档online的更多信息,请参阅。
您是否必须在firebase中注册用户(从google和facebook登录时)才能创建配置文件,例如带有图片?
对于Google Sing-In,可以使用来自Google帐户的个人资料图片以及更多可用的元数据。
Github Quickstart上的Google登录方法和Facebook登录方法示例会在新用户第一次登录Firebase项目时自动添加新用户。您可以尝试添加新用户,并在Firebase身份验证用户标签上看到它已添加。见下图:
您还可以授予用户注销和删除其登录帐户的权限,这也包含在文档和Github示例中。