以下のコードは、Googleログインに使用しています。アプリフォルダーにgoogle-services.json
ファイルを追加しました。ルートgradleモジュールでclasspath 'com.google.gms:google-services:2.0.0
'を使用しています。開発者コンソールでパッケージを確認し、正しいものを追加しました。ターミナルでコマンドkeytool -list -v -keystore ~/.Android/debug.keystore -alias androiddebugkey -storepass Android -keypass Android
を実行して取得したSHA1キー(ubuntuを使用しています)。Google+ APIを有効にしました。OAuth同意画面とOAuthクライアントIDを作成しました。それでも取得できます。グーグルでログインしようとすると以下のエラー-
{statusCode = DEVELOPER_ERROR、resolution = null}
同様の質問を確認しましたが、適切な解決策が見つかりませんでした。コード
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestProfile().requestId()
.requestEmail().requestScopes(new Scope(Scopes.PLUS_ME))
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
googleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
GoogleSignInAccount acct = result.getSignInAccount();
} else {
// Signed out, show unauthenticated UI.
// updateUI(false);
}
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if(mGoogleApiClient.isConnected())
{
mGoogleApiClient.disconnect();
}
}
@Override
protected void onResume() {
super.onResume();
if(mGoogleApiClient.isConnected())
{
mGoogleApiClient.connect();
}
}
マニフェスト
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
<!-- To use account credentials -->
<uses-permission Android:name="Android.permission.USE_CREDENTIALS" />
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
問題は、~/.Android/debug.keystore
からSHA1を選択したが、ビルドへの署名にSHA1を使用していないことにある可能性があります。
モジュールオプションの[署名]タブに移動し、フィールドStore File
のみを/Users/<your_user>/.Android/debug.keystore
に設定してプロファイルを追加します。
[フレーバー]タブで、[Signing Config
]ドロップダウンでそれを選択します。
[ビルドタイプ]タブで、ビルドタイプの[Signing Config
]ドロップダウンでそれを選択します(おそらくDebug
)。
クリーンアップと再構築。
私は同じ問題を抱えており、 この解決策 は機能しました。これがあなたや他の人に役立つことを願っています。
プラグインを適用します: 'com.Android.application'
Android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
このapplicationIdがマニフェストファイルのパッケージ名と同じであることを確認してください(大文字と小文字が重要です)
applicationId "com.example"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
異なる2台のコンピューターで作業している場合は、SHA1を再度生成して、console.firebase.google.comに追加し、google-service.jsonをダウンロードして、プロジェクトに追加する必要があります。
ここにある私のアプリのFirebaseコンソールにSHA-1 of debug key storeを追加することで解決しましたC:\ Users\my name.Androidreleaseのキーストアを作成するときにFirebaseコンソールで変更します
GoogleSignInOptionsで.requestIdToken(BACKEND_CLIENT_ID)を使用します。
BACKEND_CLIENT_IDを取得する方法はここにあります: https://developers.google.com/identity/sign-in/Android/start-integrating#get_your_backend_servers_oauth_20_client_id
これがお役に立てば幸いです。