この質問にはすでに多くの支持された回答が存在しますが、私はその論理を理解するのに苦労しました。だから、私は自分の研究を思いつきます。
SHA-1 を取得するには、ターミナルでこれを実行します。
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
約OAuth 2.0 client IDs
- Web 用の OAuth (アプリではこれは として使用されます
server_client_id
)
- Android 用の OAuth (これは、正しいパッケージ名と署名証明書のフィンガープリントSHA-1を使用して作成する必要があります)。
デバッグとリリースに別のキーストアを使用している場合は、OAuth 2.0 client IDs
それぞれのパッケージ名とSHA-1を使用して個別に作成する必要があります。
OAuth 2.0 client IDs
ここで 作成または編集できますhttps://console.developers.google.com/apis/credentials?project=
- アプリに移動します。
- Android 用の OAuth が既にある場合は、その名前をクリックして、パッケージ名とSHA-1を確認します。
キーストアの詳細をグローバル(プロジェクト内ではなくローカル)に保存し、以下のようgradle.properties
に取得することで、デバッグとリリースの両方に同じキーストアを使用できbuild.gradle
ます。
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
// ...
}
}
}
以下のスニペットを使用できます
@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());
}
}
}
注: 構成ファイルを生成したときに Google サインインのみを有効にした場合はgoogle-servies.json
、プロジェクトにファイルを追加する必要はありません (ファイルを生成すると、必要な構成手順が実行されます)。