Over the limit
firebase 파이어베이스 구글로그인 연동하기 본문
시작 전에, 안드로이드 프로젝트에 firebase 추가는 필수. 안했다면 하단의 링크 참고
Android 프로젝트에 Firebase 추가 (google.com)
Android 프로젝트에 Firebase 추가
기본 요건 Android 프로젝트가 준비되지 않았다면 빠른 시작 샘플 중 하나를 다운로드하여 Firebase 제품을 사용해 볼 수 있습니다. 다음 옵션 중 하나를 사용하여 Android 앱을 Firebase에 연결할 수 있
firebase.google.com
activity_main
<com.google.android.gms.common.SignInButton
android:id="@+id/login_Button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="304dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Authentication 가서 Google - 사용 설정도 잊지 말아야 한다.
MainActivity.java
package com.example.startfirebasestudy;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.GoogleAuthProvider;
import static android.content.ContentValues.TAG;
public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener{
private static final int RC_SIGN_IN = 10;
private GoogleApiClient mGoogleApiClient;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
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, this)
.addApi(Auth.GOOGLE_SIGN_IN_API,gso)
.build();
SignInButton button = (SignInButton)findViewById(R.id.login_Button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent signIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signIntent,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 {
// 구글 사용자가 맞으면 파이어베이스로 넘김
GoogleSignInAccount account = task.getResult(ApiException.class);
Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId());
firebaseAuthWithGoogle(account.getIdToken());
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
Log.w(TAG, "Google sign in failed", 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()) {
}else{
Toast.makeText(MainActivity.this, "FireBase아이디 생성이 완료 되었습니다.",Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
}
실행화면
Sign in 버튼이 나온다. 이걸 누르면
다음과 같이 구글 계정으로 로그인이 가능
'Framework > Android Studio' 카테고리의 다른 글
DicSwuNary 소개 영상 (0) | 2022.03.04 |
---|---|
공동구매/배달 앱 소개 영상 (0) | 2021.08.25 |
[Kotlin] 음악 재생 프로그램 만들기 (1) | 2021.07.26 |
net::ERR_CACHE_MISS 오류 (0) | 2021.07.19 |
[Kotlin] 타이머 만들기 (0) | 2021.07.15 |