因此,正如标题所述,每次使用发行版apk时,我始终以错误代码“ 12500”登录失败,但在调试apk上时,始终成功登录。 Google Play服务已更新至最新版本,还重新下载了google-services.json。在发行版APK上仍然无法通过错误代码“ 12500”登录。
我的活动:
public class ActivityLogin extends AppCompatActivity {
@BindView(R.id.iv_google)ImageView ivGPlus;
private GoogleSignInClient mGoogleSignInClient;
private final int RC_SIGN_IN = 123;
private Context context;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
prepareGoogle();
initUI();
}
@Override
protected 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 {
GoogleSignInAccount account = task.getResult(ApiException.class);
} catch (ApiException e) {
e.printStackTrace();
}
}
}
private void initUI(){
ivGPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signInGoogle();
}
});
}
//login google
private void prepareGoogle(){
mAuth = FirebaseAuth.getInstance();
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getResources().getString(R.string.default_web_client_id))
.requestServerAuthCode(getResources().getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}
private void signInGoogle() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
}
我也已经禁用了proguard:
android {
compileSdkVersion 27
buildToolsVersion '28.0.2'
defaultConfig {
applicationId "com.example.app"
minSdkVersion 19
targetSdkVersion 27
versionCode 17
versionName "1.1.9.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
jumboMode = true
}
}
答案 0 :(得分:2)
由于它可以在调试版本中运行,因此此错误主要是由于SHA密钥或程序包名称问题引起的。您说您拥有最新的google-services.json
,所以我假设您在Firebase项目中包括了发行密钥库的SHA指纹?
否则,您将必须按照this answer中的说明获取指纹,然后将其添加到Firebase项目中,然后再次更新google-services.json
。
如果这已经完成,并且您在发布到Google Play商店的应用中遇到问题,则应检查是否已注册Google App Signing,因为它涉及两个不同的上载和签名密钥。
您必须包含签名密钥才能在用户设备上使用。如果您要侧面加载该应用程序进行测试,请在使用上传密钥创建发布apk之后,还必须包含该版本。
我可以根据您的情况提供更多详细信息。出现错误时,编辑问题并包括logcat
的相关部分,将可以更轻松地提供准确的建议。
答案 1 :(得分:2)
接受的答案对我来说没有帮助。我到处都检查过SHA键,并且它们匹配。本地调试有效,本地发行版有效,但是将应用发布到Play商店后,所有版本在Google登录(Alfa,Beta版,正式版)中均出现12500错误。
所以我问Google一个稍微不同的问题,偶然发现github上有一个关于本机和Google登录反应的线程。Answer by HadrienPierart帮助我发现并解决了问题。