Obwohl es in dieser Frage bereits viele positive Antworten gibt, bemühte ich mich, die Logik zu verstehen. Also habe ich meine Forschungen gemacht.
Führen Sie dies im Terminal aus, um SHA-1 zu erhalten:
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
Über OAuth 2.0 client IDs
- OAuth für das Web (In der App wird dies verwendet als
server_client_id
)
- OAuth für Android (Dies muss unter Verwendung des korrekten Paketnamens und des Fingerabdrucks des Signaturzertifikats SHA-1 erstellt werden. )
Wenn Sie den unterschiedlichen Keystore für Debug & Release verwenden, müssen Sie einen separaten Keystore OAuth 2.0 client IDs
mit dem entsprechenden Paketnamen & SHA-1 erstellen .
Sie können Ihre OAuth 2.0 client IDs
hier https://console.developers.google.com/apis/credentials?project= erstellen oder bearbeiten
- Navigieren Sie zu Ihrer App.
- Wenn Sie bereits eine OAuth für Android haben, klicken Sie auf deren Namen und überprüfen Sie den Paketnamen & SHA-1 .
Wir können denselben Keystore sowohl für das Debuggen als auch für das Release verwenden, indem wir die Keystore-Details in global (lokal, nicht innerhalb des Projekts) speichern gradle.properties
und build.gradle
wie unten beschrieben einfügen.
def key_alias = ""
def key_password = ""
def store_file = ""
def store_password = ""
try {
key_alias = YOUR_KEY_ALIAS
key_password = YOUR_KEY_PASSWORD
store_file = YOUR_KEYSTORE_PATH
store_password = YOUR_KEYSTORE_PASSWORD
} catch (Exception exception) {
throw new IllegalStateException('Failed to find key store details. Social Login is disabled');
}
android {
signingConfigs {
config {
keyAlias key_alias
keyPassword key_password
storeFile file(store_file)
storePassword store_password
}
}
buildTypes {
debug {
signingConfig signingConfigs.config
}
release {
signingConfig signingConfigs.config
}
}
}
Sie können unten Snippet verwenden
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// ...
} else if (result.getStatus().getStatusCode() == CommonStatusCodes.NETWORK_ERROR) {
// No internet connection
} else if (result.getStatus().getStatusCode() == CommonStatusCodes.DEVELOPER_ERROR) {
// Wrong server OAuth key(server_client_id)
} else if (result.getStatus().getStatusCode() == 12501) {
// Wrong app signing-certificate fingerprint SHA1
} else {
Log.e("Google sign in error", result.getStatus().toString());
}
}
}
Hinweis: Wenn Sie beim Generieren der Konfigurationsdatei nur Google Sign-In aktiviert haben, müssen Sie die Datei nicht zu google-servies.json
Ihrem Projekt hinzufügen (das Generieren der Datei führt die erforderlichen Konfigurationsschritte aus).
resultCode == Activity.RESULT_CANCELED
) zu verarbeiten. Verwenden von GMS 8.4.0.