Android 在最新的Google play服务中运行时,Google登录错误12500

Android 在最新的Google play服务中运行时,Google登录错误12500,android,google-signin,googlesigninapi,Android,Google Signin,Googlesigninapi,我正在尝试将谷歌登录集成到我的android应用程序中,但我遇到了一个错误。当它运行一个旧版本的Google Play服务(例如9.8.79)时,没有问题,它工作得非常好。然后当它运行最新版本的Google Play服务时,问题出现了,错误代码是 Status{statusCode=未知状态代码:12500,分辨率=null 我注意到logcat的信息是: 12-21 16:47:57.128 909-1861/? W/ActivityManager: Unable to start serv

我正在尝试将谷歌登录集成到我的android应用程序中,但我遇到了一个错误。当它运行一个旧版本的Google Play服务(例如9.8.79)时,没有问题,它工作得非常好。然后当它运行最新版本的Google Play服务时,问题出现了,错误代码是

Status{statusCode=未知状态代码:12500,分辨率=null

我注意到logcat的信息是:

 12-21 16:47:57.128 909-1861/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.129 909-2225/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@daa436e
12-21 16:47:57.129 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms
12-21 16:47:57.133 909-1300/? I/ActivityManager: retrieveServiceLocked, callerApp: ProcessRecord{9210179 10959:com.google.android.gms.ui/u0a8}, flags: 400
12-21 16:47:57.134 909-1300/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.134 909-1863/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@71e6a0f
12-21 16:47:57.135 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms
可能的原因是什么

谢谢

代码是:

private void googleSignIn() {
    if(mGoogleApiClient == null){
        GoogleSignInOptions gso = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestId()
                .requestIdToken(getResources().getString(R.string.server_client_id))
                .build();
        mGoogleApiClient = new GoogleApiClient
                .Builder(this)
                .enableAutoManage(this,this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .enableAutoManage(this, this)/* FragmentActivity *//* OnConnectionFailedListener */
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
    }
    if(mGoogleApiClient!=null){
        mGoogleApiClient.connect();
    }
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}
应用程序梯度:

    buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        // The Fabric Gradle plugin uses an open ended version to react
        // quickly to Android tooling updates
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'

apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        applicationId "com.qraved.imaginato.loginterminator"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.1.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-auth:9.6.1'
    compile('com.twitter.sdk.android:twitter:2.1.1@aar') {
        transitive = true;
    }
    compile 'com.facebook.android:facebook-android-sdk:4.28.0'
}
格拉德尔项目:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
遵循此api文档,但请记住,在WEB_CLIENT_ID中使用在google-services.json文件中生成的CLIENT ID值

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {

private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234

private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    var login_button = findViewById<Button>(R.id.button)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }

    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()

    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()


    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }


}


override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}


private fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
    try {
        val account = completedTask.getResult(ApiException::class.java)


    } catch (e: ApiException) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information.
        Log.e("TAG", "signInResult:failed code=" + e.statusCode)

    }

}
class MainActivity:AppCompativeActivity(),GoogleAppClient.OnConnectionFailedListener{
private val TAG=“JSAGoogleSignIn”
私人val请求\代码\登录\登录=1234
private val WEB_CLIENT_ID=“354298333018-XXXXXXXXXXXXXX.apps.googleusercontent.com”
私有变量mAuth:FirebaseAuth?=null
私有变量mGoogleApiClient:GoogleApiClient?=null
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var login_button=findviewbyd(R.id.button)
var txt_寄存器=findViewById(R.id.txt_寄存器)
txt_register.setOnClickListener{
var intent=intent(this@MainActivity,RegisterActivity::class.java)
完成()
星触觉(意图)
}
val gso=GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT\u SIGN\u-IN)
.requestIdToken(WEB\u客户端\u ID)
.requestEmail()
.build()
mGoogleApiClient=GoogleApiClient.Builder(此)
.enableautomanager(此/*FragmentActivity*/,此/*OnConnectionFailedListener*/)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build()
mAuth=FirebaseAuth.getInstance()
登录按钮。设置单击侦听器{
val intent=Auth.GoogleSignInApi.getsigninent(mgoogleapclient)
startActivityForResult(意图、请求、代码、登录)
}
}
覆盖连接失败(p0:ConnectionResult){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
私人娱乐更新(用户:FirebaseUser?){
如果(用户!=null){
Log.e(“Email”、“Value”+user.Email)
}
}
覆盖有趣的onStart(){
super.onStart()
val currentUser=mAuth!!.currentUser
updateUI(当前用户)
}
在ActivityResult上的公共覆盖乐趣(请求代码:Int,结果代码:Int,数据:Intent?){
super.onActivityResult(请求代码、结果代码、数据)
//从GoogleSignInClient.GetSignInent(…)启动Intent返回的结果;
if(requestCode==请求\代码\登录){
val result=Auth.GoogleSignInApi.getSignInResultFromIntent(数据)
如果(结果。发布成功){
//成功->通过Firebase验证
val帐户=结果。签名帐户
firebaseAuthWithGoogle(账号!!)
}否则{
//失败->更新用户界面
updateUI(空)
Toast.makeText(applicationContext,“登录:失败!”+result.status,
吐司。长度(短)。show()
}
}
}
私人娱乐firebaseAuthWithGoogle(账户:谷歌签名账号){
Log.e(标记“firebaseAuthWithGoogle():”+acct.id!!)
val credential=GoogleAuthProvider.getCredential(acct.idToken,null)
mAuth!!.signInWithCredential(凭证)
.addOnCompleteListener(此){task->
如果(任务成功){
//成功登录
Log.e(标记“signInWithCredential:Success!”)
val user=mAuth!!.currentUser
updateUI(用户)
}否则{
//登录失败
Log.w(标记“signInWithCredential:Failed!”,task.exception)
Toast.makeText(applicationContext,“身份验证失败!”,
吐司。长度(短)。show()
updateUI(空)
}
}
}
private fun handleSignInResult(已完成任务:任务){
试一试{
val account=completedTask.getResult(ApiException::class.java)
}捕获(e:异常){
//ApiException状态代码表示详细的故障原因。
//有关更多信息,请参阅GoogleSignInstationCodes类参考。
Log.e(“标记”、“签名结果:失败代码=“+e.statusCode”)
}
}

。首先,如果您遇到错误12500或12502,并且多次尝试创建新项目,但都无法正常工作,请冷静下来, 只需检查您的sha 1和配置,最重要的是,如果您还添加了firebase服务,只需为所有人保留一个项目,并详细说明所有其他项目。 确保您已将sha1添加到firebase控制台项目设置中,这也是最重要的。


考虑添加一段代码OK@AndreyF,我将执行
code:12500
指示用户无法从登录失败中恢复。切换到其他帐户可能有帮助,也可能没有帮助。@Wizard是的,这是一个令人头痛的问题,但我必须找到使我的项目正常工作的原因。唉!@Wizard它无法与其他帐户一起工作当我使用旧版本的google play服务时,它工作了!