5

Google 엔드 포인트를 얻으려고합니다. 엔드 포인트 서비스를 생성하여 Google API 익스플로러를 통해 정상적으로 작동하는지 테스트 할 수있었습니다. 그런 다음 안드로이드 클라이언트를 생성하고 내 엔드 포인트 서비스를 호출하기 위해 tryied. 나는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)); 

CLIENT_ID의 일부 일치하지 않는 것 같습니다,

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

여기 내 서비스에 액세스하는 데 사용되는 자격 증명 즉 구축을 내 안드로이드 자바 코드, 로그에서이 오류를 참조하십시오. 여기에 만든

1) 하나 개의 API 프로젝트에서 구글 API를 콘솔에서 2 client_ids이 A) WEB_CLIENT_ID = 내가 리디렉션 URI를 = 없음 & 자바 스크립트 기원 = 없음으로 웹 애플리케이션을위한 CLIENT_ID을 만들어, 내가 한 것입니다. b) ANDROID_CLIENT_ID = 패키지 이름이 & sha1 인증서 지문 인 Android 앱용 client_id를 만들었습니다.

2) 다음

이미 비슷한 스레드를 본 적이 그들은 도움이되지 않았다

@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]) 

전체 로그

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

+0

내 API 콘솔에 새 웹 응용 프로그램 CLIENT_ID를 재생성 (이것은 맥에서 디렉토리, 그것은 리눅스와 윈도우에서 다르다). 앱 엔진 백엔드 에서뿐만 아니라 android 잠재 고객 범위에서도 잠재 고객에게 사용되었습니다. 아직도 운이 없다. – plspl

+0

내 안드로이드 앱 패키지의 이름을 변경했으며 새로운 안드로이드 클라이언트 ID를 생성했습니다. 여전히 같은 오류가 발생합니다. – plspl

+0

명백한 오류의 원인을 제거하려면 생산 환경에서 엔드 포인트를 실행하고 실제 안드로이드 장치 (에뮬레이터가 아닌)에서 테스트하고 있습니까? –

답변

4

휴! 마침내 그것이 작동하게했다. 무엇이 잘못되었는지 확실하지 않습니다. 이러한 것들을 시도, 디버그 키 저장소 파일을 삭제하고 그것을 다시 생성했습니다. sha1 지문을 api 콘솔에 복사했습니다. 그런 다음 여기에서 나온 지침 (http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html)을 통해 적어도 Android 기기에서 토큰을받을 수 있는지 확인하십시오. 그런 다음 엔드 포인트 생성 클라이언트 클래스를 사용하도록 변경했습니다. 이제 내 앱은 엔드 포인트 서비스를 통해 앱 엔진 백엔드와 대화 할 수 있습니다.

6

Google api 콘솔에서 프로젝트의 이름을 설정하여이 문제를 해결합니다. 새로운 UI API를 콘솔에서

[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 { 
    ... 
} 

포인트는 클라이언트 ID 속성입니다. ANDROID_CLIENT_ID이 (가)

  1. Cloud Console->APIS & Auth->Credentials->Client ID for Android 애플리케이션의 clientID와 일치해야합니다.
  2. 해당 클라이언트 ID의 패키지 이름은 클라이언트로 사용중인 Android 앱과 동일해야합니다.
+0

형, 어쨌든 @APi (..) 어딘가에 패키지 이름을 추가해야한다는 뜻인가요? 애플리케이션 패키지 이름이 Google 콘솔의 Android 앱 패키지 이름과 동일하지만 여전히 동일한 오류가 발생합니다. Pls는 도움을받을 수 있습니까? – Tanvir

+0

Constants.ANDROID_CLIENT_ID의 값은 (AndroidManifest의) Android 앱 패키지 이름의 값과 일치해야합니다. 또한 Cloud Console의 clientId와 일치해야합니다. – William

+0

Google 콘솔에서 클라이언트 ID를 생성 할 때 요청하는 패키지 이름을 의미합니까? 말하는거야. 해당 패키지 이름은 매니페스트의 내 앱 패키지 이름과 같아야합니다. – Tanvir

2

내 장치에서 정상적으로 작동했지만 팀원 한 명에게 발생했습니다. 이클립스 설치시 다른 debug.keystore이 원인으로 밝혀졌습니다.

우리가 ~/.android/ 에 회사의 debug.keystore 파일을 복사 한 그것을 해결하기 위해

관련 문제