일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MFC 채팅
- 안드로이드 데이터베이스
- 안드로이드
- 코틀린
- Android 알람 앱
- OpenCV pixel
- OpenCV 이미지
- 안드로이드 스튜디오 알람
- OpenCV 검은색 픽셀
- 안드로이드 Firebase
- c++ 쓰레드
- MFC TCP/IP
- 안드로이드 firebase 회원가입
- MFC
- OpenCV IMAGE
- OpenCV 픽셀
- C++ 채팅
- 안드로이드 스튜디오
- c#
- MFC 채팅 예제
- OpenCV 흰색 픽셀
- MFC 소켓 프로그래밍
- c++ ifstream
- 안드로이드 파이어베이스 facebook
- 파이썬
- Kotlin
- OpenCV 이미지 처리
- MFC 채팅 프로그램
- Python
- c++ ofstream
- Today
- Total
개발자 승학
안드로이드 Firebase 구글 로그인 예제 본문
안녕하세용~~~~
이번에는 Firebase에 구글 로그인 예제를 알려드릴려고 합니다.
Firebase프로젝트에 SHA-1 지문등록을 해야합니다.
http://sh-itstory.tistory.com/58 에 방법이 나와 있습니다. 확인해주세요
프로젝트에 지문 등록까지 끝내셨다면
해당 Firebase 프로젝트에 들어가셔서 Authentication -> 로그인 방법 -> 제공업체 -> Google 사용 설정을 합니다.
이제 안드로이드 스튜디오에 gradle을 추가할게요.
App수준 gradle에
[build.gradle (Moudle: app)]
implementation 'com.google.firebase:firebase-auth:11.6.2'
implementation 'com.google.android.gms:play-services-auth:11.6.2'
이메일 로그인을 이미 하셨다면
implementation 'com.google.firebase:firebase-auth:11.6.2 <- 이 부분은 이미 싱크 하셨을 겁니다.
두 개를 추가하고 싱크해줍니다.
[activity_main.xml]
<com.google.android.gms.common.SignInButton
android:id="@+id/btn_googleSignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_below="@+id/linearlayout">
</com.google.android.gms.common.SignInButton>
xml에 추가하면 자동으로 구글마크와 Sign in 이라는 글씨가 생깁니다.
구글 로그인 버튼은 onClick이 작동 안되는거 같더라구요...
그래서 id를 주고 직접 클릭이벤트리스너를 작성해야 할 듯 합니다.
xml작성은 끝났습니다.
이제 자바 코드를 작성해봅시다.
[MainActivity.java]
// 구글로그인 result 상수
private static final int RC_SIGN_IN = 900;
// 구글api클라이언트
private GoogleSignInClient googleSignInClient;
// 파이어베이스 인증 객체 생성
private FirebaseAuth firebaseAuth;
// 구글 로그인 버튼
private SignInButton buttonGoogle;
전역 변수로 4가지를 선언합니다.
RC_SIGN_IN 상수는 구글로그인 버튼을 클릭하여 startactivityforresult 응답 코드로 사용합니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 파이어베이스 인증 객체 선언
firebaseAuth = FirebaseAuth.getInstance();
buttonGoogle = findViewById(R.id.btn_googleSignIn);
// Google 로그인을 앱에 통합
// GoogleSignInOptions 개체를 구성할 때 requestIdToken을 호출
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
googleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);
buttonGoogle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent signInIntent = googleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 구글로그인 버튼 응답
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// 구글 로그인 성공
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
}
}
}
// 사용자가 정상적으로 로그인한 후에 GoogleSignInAccount 개체에서 ID 토큰을 가져와서
// Firebase 사용자 인증 정보로 교환하고 Firebase 사용자 인증 정보를 사용해 Firebase에 인증합니다.
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// 로그인 성공
Toast.makeText(MainActivity.this, R.string.success_login, Toast.LENGTH_SHORT).show();
} else {
// 로그인 실패
Toast.makeText(MainActivity.this, R.string.failed_login, Toast.LENGTH_SHORT).show();
}
}
});
}
Firebase 프로젝트에 로그인한 Google 계정이 추가되있을겁니다.
참고.
https://firebase.google.com/docs/auth/android/google-signin?authuser=0
firebase 가이드에서 좀 더 많은 설명이 볼 수 있습니다.
궁금하신점은 댓글달아주세요.
'it > 안드로이드(android studio)' 카테고리의 다른 글
안드로이드 Notification(노티피케이션) 사용하기 (4) | 2018.09.07 |
---|---|
안드로이드 MediaPlayer mp3 재생하기 (1) | 2018.08.31 |
안드로이드 preview 안보임 해결 (0) | 2018.08.11 |
안드로이드 Firebase 회원가입(이메일) 연동방법 (35) | 2018.08.10 |
안드로이드 스튜디오 메모장 만들기(Realm 사용) (5) | 2018.05.29 |