나는 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).
코드 : 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
}
아니요, 아닙니다. '서명 된 APK 생성'에 의해 생성 된 apk의 SHA1이 Google Play 스토어에서 출시 된 APK와 전혀 다르다는 것을 알지 못했습니다. 정말 고맙습니다! –
다음 article.https를 읽었어야합니다. //support.google.com/googleplay/android-developer/answer/7384423 –
그래서 문제가 해결 되었습니까? –