1

나는 Firebase를 사용하여 Android 앱을 사용하려고합니다. Firebase를 사용하려면 Google 클라이언트 API에서 인증해야합니다. 하지만 Google 클라이언트 API로 인증 할 수 없습니다.Google 클라이언트 API Android에서 인증 할 수 없습니다.

다음 코드에서 GoogleSignInResult.isSuccess()은 false를 반환합니다. GoogleSignInResult.getState().getStateMessage()은 null을 반환합니다. 따라서 Google 인증이 실패한 이유를 알 수 없습니다.

Google 인증을 사용할 때해야 할 일이 있습니까? 미리 감사드립니다.

참고 : "add install release.apk"명령으로 release.apk를 설치할 때 Google 클라이언트 API로 인증 할 수 있습니다. 하지만 Google Play 스토어를 통해 설치할 때 인증 할 수 없습니다 (BETA가 아니라 RELEASE).

스크린 샷 : enter image description here

코드 : onActivityResult를에서 , GoogleSignInResult.isSuccess() false를 반환 : 로그인 버튼을 누르면 (오른쪽 아래 버튼 로그인 버튼) 후.

public class LoginActivity extends AppCompatActivity { 
    private static final int REQUEST_CODE_SIGN_IN = 9001; 

    private FirebaseAuth firebaseAuth; 
    public static GoogleApiClient googleAPIClient; 

    private DatabaseReference usersRef; 

    private ProgressDialog progressDialog; 

    private GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener = new GoogleApiClient.OnConnectionFailedListener() { 
     @Override 
     public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
      Toast.makeText(LoginActivity.this, "Google Play Services error.", Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     System.out.println("*** LoginActivity.onCreate - start"); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     try { 
      progressDialog = new ProgressDialog(this); 

      GoogleSignInOptions options = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
        .requestIdToken(getString(R.string.default_web_client_id)) 
        .requestEmail() 
        .build(); 

      googleAPIClient = new GoogleApiClient.Builder(this) 
        .enableAutoManage(this, onConnectionFailedListener) 
        .addApi(Auth.GOOGLE_SIGN_IN_API, options) 
        .build(); 

      firebaseAuth = FirebaseAuth.getInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     System.out.println("*** LoginActivity.onCreate - start"); 
    } 

    @Override 
    public void onStop() { 
     System.out.println("LoginActivity.onStop - start"); 
     if (null != usersRef) { 
      usersRef.removeEventListener(valueEventlistener); 
     } 
     super.onStop(); 
    } 

    public void onCancelButtonClick(View view) { 
     finish(); 
    } 

    public void onLoginButtonClick(View view) { 
     System.out.println("*** LoginActivity.onLoginButtonClick - start"); 
     Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleAPIClient); 
     startActivityForResult(intent, REQUEST_CODE_SIGN_IN); 
     System.out.println("*** LoginActivity.onLoginButtonClick - end"); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     System.out.println("*** LoginActivity.onActivityResult - start"); 

     if (requestCode == REQUEST_CODE_SIGN_IN) { 
      System.out.println("*** LoginActivity.onActivityResult - in if"); 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      if (result.isSuccess()) { 
       System.out.println("*** LoginActivity.onActivityResult - in if success"); 
       GoogleSignInAccount account = result.getSignInAccount(); 
       firebaseAuthWithGoogle(account); 
      } else { 
       System.out.println("*** LoginActivity.onActivityResult - in if error"); 
       System.out.println("*** LoginActivity.onActivityResult - in if error state:" + result.getStatus().getStatusMessage()); 
       Toast.makeText(LoginActivity.this, "Error:" + result.getStatus().getStatusMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     } 
     System.out.println("*** LoginActivity.onActivityResult - end"); 
    } 

    public void firebaseAuthWithGoogle(GoogleSignInAccount account) { 
     // firebase authentication 
    } 

답변

2

Firebase 프로젝트 설정에서 릴리스 버전 SHA1 지문을 추가 했습니까?

+0

아니요, 아닙니다. '서명 된 APK 생성'에 의해 생성 된 apk의 SHA1이 Google Play 스토어에서 출시 된 APK와 전혀 다르다는 것을 알지 못했습니다. 정말 고맙습니다! –

+0

다음 article.https를 읽었어야합니다. //support.google.com/googleplay/android-developer/answer/7384423 –

+1

그래서 문제가 해결 되었습니까? –