Регистрация в Facebook / Google в приложении Firebase для Android - PullRequest
1 голос
/ 13 марта 2019

Впервые разрабатываю приложение для Android.Я пытаюсь зарегистрировать пользователя в нашей Firebase при входе через FaceBook и Google.

Пока у меня есть логин с электронной почтой и паролем.Войдите через Facebook и Google.

Вопрос заключается в следующем: нужно ли регистрировать пользователя в firebase (при входе в Google и 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();
                        }
                        // ...
                    }
                });
    }

Я следовал инструкциям FireBase при регистрации через Google:https://firebase.google.com/docs/auth/android/google-signin

После первого входа пользователя создается новая учетная запись пользователя, которая связывается с учетными данными, то есть именем пользователя и паролем, номером телефона или информацией о поставщике аутентификации.- пользователь вошел в систему с помощью.Эта новая учетная запись хранится как часть вашего проекта Firebase и может использоваться для идентификации пользователя во всех приложениях в вашем проекте, независимо от того, как пользователь выполняет вход.

Это копируется после руководстваЯ просто пытаюсь найти любую учетную запись Google на базе Firebase, с которой я зарегистрировался в своем приложении.

РЕДАКТИРОВАТЬ:

Обнаружить, что в моем приложении произошла ошибка при входе в Google:

здесь логкат:

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)

1 Ответ

1 голос
/ 13 марта 2019

Что нужно учитывать при кодировании входа в Firebase Auth

Следуйте процессу, описанному в репозитории Github, и вы можете посмотреть на несколько рабочих примеров действий в FirebaseБыстрый старт Github репо.

Вам также необходимо включить Facebook и Google Sign-In в вашей консоли Firebase.Еще один важный момент - убедитесь, что вы используете самый свежий файл google-services.json каждый раз, когда вносите изменения в свою консоль Firebase.

Наконец, убедитесь, что у вас есть требуемая отладка и отпустите настройку отпечатков пальцев SHA1 сваш проект Firebase в консоли Firebase для подключения к службе Firebase, когда ваше приложение переходит в магазин Play.

Доступ к вашим учетным записям зарегистрированных пользователей Firebase

  1. Войти вВы - консоль Firebase.
  2. Перейдите в проект Firebase и выберите «Аутентификация» в меню слева.
  3. В нем отобразится вкладка «Пользователи» с именами пользователей, идентификаторами и деталями аутентификации.

Для получения дополнительной информации о документации Firebase онлайн .

Вам необходимо зарегистрировать пользователя в firebase (при входе в Google и Facebook), чтобы иметь возможностьсоздать профиль например с изображением?

Для Google Sing-In, изображение профиля из аккаунта Google и некоторые другиеДоступны метаданные, которые можно использовать.

Методы входа в Google и примеры входа в Facebook на Github Quickstart автоматически добавляют новых пользователей, если они впервые подписываются в проекте Firebase.Вы можете попробовать добавить нового пользователя и увидеть, что он добавляется на вашей вкладке Firebase Authentication Users.Видно ниже: enter image description here

Вы также можете дать пользователям возможность выйти и удалить свои учетные записи, также описанные в документации и примерах Github.

...