5

以下のコードは、Google ログインに使用していgoogle-services.jsonます。アプリ フォルダーにファイルを追加しclasspath 'com.google.gms:google-services:2.0.0ました。ルート gradle モジュールで ' を使用していますkeytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android。 (私はubuntuを使用しています)Google+ APIを有効にしました.OAuth同意画面とOAuthクライアントIDを作成しました.それでも、google-でログインしようとすると以下のエラーが発生します-

{statusCode=DEVELOPER_ERROR、解決策=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" />
4

7 に答える 7

6

から SHA1 を選択したが~/.android/debug.keystore、それを使用してビルドに署名していないことが問題である可能性があります。

  1. Store Fileモジュール オプションの [署名] タブに移動し、唯一のフィールドが [署名] に設定されたプロファイルを追加します。/Users/<your_user>/.android/debug.keystore

  2. [フレーバー] タブで、Signing Configドロップダウンから選択します。

  3. [ビルド タイプ] タブで、ビルド タイプのSigning Configドロップダウンから選択します (おそらくDebug)。

  4. クリーンアップして再構築します。

于 2016-07-05T12:29:52.020 に答える
3

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 をご覧ください。

これが役に立ったことを願っています!

于 2016-06-20T20:23:13.613 に答える