10

より詳細なコンテキストについては、この投稿がこれに続きます

以前の問題を解決するために、Tim Bray が提示した解決策に従ってみました: Android アプリからのバックエンド呼び出しの検証

2 つのクライアント ID を取得するために、Google API コンソールで 2 つのプロジェクトを宣言しました

  • ホスト名として「localhost」を使用した「Webアプリケーション」としての最初のもの(それは問題ですか?)
    • クライアント ID: XXXXXXXXXX.apps.googleusercontent.com
  • AndroidManifest.xml で指定されたパッケージ名と SHA1 フィンガープリントを持つ Android アプリとしての 2 つ目 (debug.keystore と [my].keystore で試行)
    • クライアント ID: YYYYYYYYYY.apps.googleusercontent.com

残念ながら、私は Android 側で例外に直面しています:

com.google.android.gms.auth.GoogleAuthException: Unknown
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:66)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1102)

行上:

return GoogleAuthUtil.getToken(LoginActivity.this, account[0], "audience:server:client_id:XXXXXXXXXX.apps.googleusercontent.com");

私が間違っていることは何ですか?

前もって感謝します

4

5 に答える 5

14

数時間後、スコープ文字列 ( "audience:server:client_id:...") で、Android のクライアント ID ではなく、Web アプリケーションのクライアント ID を使用する必要があることがわかりました。

Android アプリのクライアント ID は未使用です。ここでは、Android アプリのパッケージ名を Web アプリにリンクするだけです。

于 2014-02-28T19:14:18.523 に答える
4

2つのクライアントIDは同じプロジェクトの一部である必要があります。

于 2013-01-18T23:30:03.330 に答える
3

これ以上行う必要はありません。Google コンソールでクライアント ID を再作成し、この行をスコープ文字列としてコードに記述してください。

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";

https://github.com/AshishPsaini/GoogleAuth

于 2014-10-10T06:04:58.010 に答える
2

パッケージ名を変更し、Google API コンソールでデバッグ SHA1 を使用して新しいクライアント ID を生成するのを忘れたときに、このエラーが発生しました。

于 2013-08-18T23:18:39.383 に答える
0

GoogleApiCliente に追加されたスコープを Plus.SCOPE_PLUS_LOGIN に変更します。これは私にとってはうまくいきます。

    googleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API)
            .addScope(Plus.SCOPE_PLUS_LOGIN)
            .build();
于 2015-11-05T13:02:26.830 に答える