Google帐户登录Android返回已取消的结果

时间:2017-11-12 23:12:13

标签: android firebase google-play-services google-oauth google-signin

我正在使用Firebase& Google Play服务允许用户登录我的Android应用。

我完全按照指南操作,但我仍然无法登录,因为每次运行我的应用时,我都会收到RESULT_CANCEL,错误为com.google.android.gms.common.api.ApiException: 12500

这是我的代码(简化):

public class MyMainActivity extends Activity {

private final int RC_SIGN_IN = 0;

private FirebaseAuth mAuth;
private FirebaseUser mUser;
private FirebaseStorage mStorage;

private GoogleSignInAccount mAccount;
private GoogleSignInClient mGoogleSignInClient;

private View mDecorView;

private void initUserGoogle() {

    mAccount = GoogleSignIn.getLastSignedInAccount(this);

    if (mAccount != null) return;

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.server_client_id))
            .build();
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}

private void signIn() {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent, RC_SIGN_IN);
}

private void firebaseAuthGoogle(GoogleSignInAccount acct) {

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        mUser = mAuth.getCurrentUser();
                        mAuthed = true;
                        finish();
                    } else {
                        finish();
                    }
                }
            });
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        mDecorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_my_main);
    mDecorView = getWindow().getDecorView();

    mAuth = FirebaseAuth.getInstance();

    initUserGoogle();
    signIn();

}

@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 {
            mAccount = task.getResult(ApiException.class);
            firebaseAuthGoogle(mAccount);
        } catch (ApiException e) {
            finish();
        }
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();

    FirebaseAuth.getInstance().signOut();
}

}

其他信息:

  • 在Linux Mint上使用Android Studio(最新版本)
  • Firebase&amp; Google Play服务版本均为11.6.0
  • 使用内置模拟器测试应用
  • OAuth 2.0的设置凭据 - 使用Web应用程序ID而不是Android
  • 在项目
  • 中放置了最新的google-services.json
  • 使用从debug.keystore
  • 获取的正确密钥哈希

这是我的build.gradle:

apply plugin: 'com.android.application'

android {
signingConfigs {
    debugconfig {
        keyAlias 'AndroidDebugKey'
        keyPassword 'Notmypasswordjustaplaceholder'
        storeFile file('/home/myusername/.android/debugkey.jks')
        storePassword 'Alsonotmypasswordjustaplaceholder'
    }
}
compileSdkVersion 26
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 19
    targetSdkVersion 26
    versionCode 1
    versionName "0.1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        signingConfig signingConfigs.debugconfig
    }
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.1.0'

implementation 'com.google.firebase:firebase-storage:11.6.0'
implementation 'com.google.firebase:firebase-auth:11.6.0'
implementation 'com.google.firebase:firebase-ads:11.6.0'

testImplementation 'junit:junit:4.12'

androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

compile 'com.google.firebase:firebase-core:11.6.0'
compile 'com.google.android.gms:play-services-auth:11.6.0'
}

apply plugin: 'com.google.gms.google-services'

(有些项目因隐私/安全而更改)

如果需要任何其他信息,请询问。

0 个答案:

没有答案