5

Googleエンドポイントを作成しようとしています。私はエンドポイントサービスを作成し、Google APIエクスプロラーを通じて正常に動作していることをテストできました。私はアンドロイドクライアントを生成し、私のエンドポイントサービスを呼び出すためにtryied。私はclient_idの中にいくつかの不一致があるように見えますGLSエラー:GoogleクラウドエンドポイントのINVALID_AUDIENCE

AUDIENCE = "server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com"; 
credential = GoogleAccountCredential.usingAudience(this, AUDIENCE); 
      setAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); 

、ここで

04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE [email protected] audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com 

は私のサービスにアクセスするために使用される資格すなわちを構築するために、私のアンドロイドのJavaコードで、ログにこのエラーが表示されます。ここでは、作成した

1)は1つのAPIプロジェクトでのGoogle APIコンソールで2 client_idsは、 A)WEB_CLIENT_ID =私はリダイレクトのURI =なし& JavaScriptの起源=なしでWebアプリケーションのためのclient_idを作成し、私がやったことです。 b)ANDROID_CLIENT_ID =パッケージ名が& sha1の証明書フィンガープリントでアンドロイドアプリのclient_idを作成しました。

2)次に

04-05 08:48:20.397: D/overlay(159): Set pipe=RGB1 dpy=0; Set pipe=VG0 dpy=0; 
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null 
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null 
04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE [email protected] audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com 
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: Unknown status: UNKNOWN 
04-05 08:48:20.547: W/System.err(31908): com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException 
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:224) 
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836) 
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412) 
04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345) 
04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463) 
04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:174) 
04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:1) 
04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
04-05 08:48:20.557: W/System.err(31908): at java.lang.Thread.run(Thread.java:856) 
04-05 08:48:20.557: W/System.err(31908): Caused by: com.google.android.gms.auth.GoogleAuthException: Unknown 
04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 

はすでに同様のスレッドを見たことがあり、彼らは助けにはならなかった、 Google Api and android Oauth INVALID_AUDIENCE error

完全なログ

@endpoints.api(name='devices', 
       version='v1', 
       description='Service to register devices', 
       allowed_client_ids=[ANDROID_CLIENT_ID,WEB_CLIENT_ID,endpoints.API_EXPLORER_CLIENT_ID], 
       audiences = [WEB_CLIENT_ID]) 

、Pythonで私のエンドポイントのサービスでこれらを使用しました

+0

は私のAPIコンソールで新しいWebアプリケーションのclient_idを再生しました。アプリエンジンのバックエンドやアンドロイドのオーディエンススコープのオーディエンスで使用されます。まだ運がありません。 – plspl

+0

Androidパッケージの名称を変更し、新しいAndroidクライアントIDを生成しました。それでも同じエラーが発生します。 – plspl

+0

明白なエラーの原因を取り除くために、実際の生産でエンドポイントを実行し、物理的なAndroidデバイス(エミュレータではない)でテストしていますか? –

答えて

4

Phew!最後にそれを働かせました。何が間違っていたのか分からない。これらのことを試し、デバッグキーストアファイルを削除して再生成しました。 sha1の指紋をapiコンソールにコピーしました。その後、ここから指示 - http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html私は少なくともアンドロイドデバイス上のトークンを取得できることを確認してください。次に、エンドポイントで生成されたクライアントクラスの使用に変更しました。これで私のアプリはエンドポイントサービスを通じてアプリエンジンのバックエンドと話すことができます。

6

Googleのapiコンソールでプロジェクトの名前を設定してこの問題を解決します。

[APIを& AUTH]で新しいUIのAPIコンソールで

- > [同意画面]

2

私は別のシステムに新しい開発環境を作成したときに、この問題は私のために発生しました。新しいシステムにAndroid Studioをインストールし、コードをコピーしました。私の古いシステムで働いていたのと同じコードは、INVALID_AUDIENCEを使って新しく動作しませんでした。いくつかのことを試した後、最終的には私の古いシステムから新しいシステムにdebug.keystoreファイルをコピーしていました。 Windowsでは、ファイルは%USERPROFILE%.androidにあります。これは、debug.keystoreがそのコンピュータ専用のインストール時にAndroid Studioによって生成されるため意味があります。 debug.keystoreには有効期限(私が聞いた365日)がありますので、これも原因になる可能性があります。だから私の本当の解決策は、新しいシステム上でdebug.keystoreファイルを再生成することでした。 debug.keystoreファイルを削除してAndroid Studioを再起動すると、ファイルが再生成されます。その後、keytoolを実行してSHA1証明書のフィンガープリントを取得します。次に、http://console.developers.google.comに移動して、指紋で新しいクライアントIDを作成します。

3

@Api#clientIdsに注釈を付けたANDROID_CLIENT_IDの値がAndroidクライアントのAndroidパッケージ名と異なる場合、このエラーが発生します。

例:

@Api(
    name = "yourFirstService", 
    version = "v1", 
    namespace = @ApiNamespace(ownerDomain = "myorg.org", ownerName = "My Org", packagePath = "firstservice"), 
    scopes = {Constant.API_EMAIL_SCOPE}, 
    clientIds = {Constants.ANDROID_CLIENT_ID, Constant.API_EXPLORER_CLIENT_ID}, 
    audiences = {Constants.ANDROID_AUDIENCE} 
) 
public class YourFirstAPI { 
    ... 
} 

が注目点がのclientId属性です。 ANDROID_CLIENT_IDは、あなたのCloud Console->APIS & Auth->Credentials->Client ID for Androidアプリケーションに

  1. マッチのclientIdある必要があります。
  2. そのクライアントIDのパッケージ名は、クライアントとして使用しているAndroidアプリと同じである必要があります。
+0

あなたは@ APi(..)のどこかにパッケージ名を追加する必要があります。アプリケーションパッケージ名はGoogleコンソールのアンドロイドアプリのパッケージ名と同じですが、同じエラーが発生しています.Plsは手助けできますか? – Tanvir

+0

Constants.ANDROID_CLIENT_IDの値は、(AndroidManifestの)Androidアプリのパッケージ名の値と一致する必要があります。また、Cloud ConsoleのclientIdと一致する必要があります。 – William

+0

GoogleのコンソールにクライアントIDを作成する際に要求されるパッケージ名を意味しますか?あなたは私に言っています。そのパッケージ名は、マニフェスト内の自分のアプリパッケージ名と同じでなければなりませんか? – Tanvir

2

私のデバイスで正常に機能しましたが、私のチームでは1つになりました。 Eclipseのインストールで異なるdebug.keystoreが原因であることが判明しました。我々は~/.android/ に、同社のdebug.keystoreファイルをコピーしたそれを解決するために

(これはMacのディレクトリである、それはLinuxとWindows上で違う)

関連する問題