본문 바로가기

Programming/안드로이드

안드로이드 스튜디오 Firebase - Login(auth) / Push [구글로그인코드적용] (2019.06.03)

환경설정은 아래서 확인하세요.

https://moblieandlife.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-Firebase-Loginauth-Push-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95-20190528

----

----

- 로그인설정

1. 로그인 / 로그아웃 버튼 만들기

2. 코드작성하기

3. 비정상 작동시 대처 방안들

 

1.

LOGIN / LOGOUT 각각의 버튼에 google_login / google_logout 이란 아이디를 부여하겠습니다.

 

 

2.

import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;



public class MainActivity extends AppCompatActivity implements 
GoogleApiClient.OnConnectionFailedListener {

          private static final int RC_SIGN_IN = 900;
          private GoogleApiClient googleApiClient;

          
          @Override
          protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);

                    GoogleSignInOptions googleSignInOptions =

                    new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)

                    .requestIdToken(getString(R.string.default_web_client_id))

                    .requestEmail()

                    .build();

                    googleApiClient = new GoogleApiClient.Builder(this)

                    .enableAutoManage(this,this)

                    .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)

                    .build();

                    Button _bt = (Button)findViewById(R.id.google_login);
                    _bt.setOnClickListener(new View.OnClickListener() {
                              @Override
                              public void onClick(View v) {
                                        GoogleLogin();
                              }
                    });

                    Button _bt1 = (Button)findViewById(R.id.google_logout);
                    _bt1.setOnClickListener(new View.OnClickListener() {
                              @Override
                              public void onClick(View v) {
                                        GoogleLogOut();
                              }
                    });
          }

          void GoogleLogin () {
                    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
                    startActivityForResult(signInIntent, RC_SIGN_IN);
          }

          void GoogleLogOut () {
                    Auth.GoogleSignInApi.signOut(googleApiClient);
          }

          public void onConnectionFailed(ConnectionResult var1){}

          @Override
          protected void onActivityResult (int _recode, int _resultCode, Intent _data){
                              if (_recode == RC_SIGN_IN) {
                                        try {
                                                  GoogleSignInResult _result = Auth.GoogleSignInApi.

                                                  getSignInResultFromIntent(_data);
                                        if(_result.isSuccess()) {
                                                  GoogleSignInAccount acct = _result.getSignInAccount();

                                                  Log.d("GOOGLELOGIN", "email:" + acct.getEmail());
                                                  Log.d("GOOGLELOGIN", "id:" + acct.getId());
                                                  Log.d("GOOGLELOGIN", "profile:" + acct.getPhotoUrl());
                                                  Log.d("GOOGLELOGIN", "DispName > " + acct.getDisplayName());

                                                  Toast.makeText(this, "google Login Success",

                                                  Toast.LENGTH_SHORT).show();
                                        }else{
                                                  Toast.makeText(this, "google Login Failed", 

                                                  Toast.LENGTH_SHORT).show();
                                        }
                              } catch (Exception e) {
                                        Log.d("GOOGLE_LOGIN", e.toString());
                              }          
                    }else {
                              super.onActivityResult(_recode, _resultCode, _data);
                    }
          }
}

 

3.

          - SHA-1 키가 정상적으로 등록되었는지 확인

          - Google Api Console 에서 OAuth 동의화면 구성했는지 확인