안드로이드 파이어베이스 Google 로그인

4415 단어 androidandroid

build.gradle의 dependencies에 firebase 라이브러리 종속 항목 선언해주기

implementation platform('com.google.firebase:firebase-bom:29.3.0')
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.android.gms:play-services-auth:20.1.0'

Firebase 인증

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken("R.string.server_client_id")
                //serverClientId는 google-services.json 파일의 client_id 값이다
                .requestEmail()
                .build();

구글 계정 사용자임을 확인하는 코드

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mCallbackManager.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                GoogleSignInAccount account = task.getResult(ApiException.class);
                firebaseAuthWithGoogle(account.getIdToken());
            } catch (ApiException e) {
            }
        }
    }

파이어베이스에 구글 계정을 저장하는 코드

    private void firebaseAuthWithGoogle(String idToken) {
        AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(MainActivity.this, "로그인 되었습니다.", Toast.LENGTH_SHORT).show();
                            finish();
                            Intent intent = new Intent(getApplicationContext(), MenuActivity.class);
                            startActivity(intent);
                        } else {
                        }
                    }
                });
    }

구글 로그인 성공시 FireBase Authentication에 추가된 모습이다.

구글 로그인 버튼

<com.google.android.gms.common.SignInButton
android:id="@+id/googleLoginButton"
android:layout_gravity="center"
android:layout_width="200dp"![]
android:layout_height="wrap_content"
android:layout_marginLeft="5dp" />

좋은 웹페이지 즐겨찾기