2015-09-03 28 views
1

我正在使用Google Play EMM API(lib google-api-services-androidenterprise-v1-rev8-1.20.0.jar)編寫應該生成激活碼的簡單應用程序用於在設備上自動安裝Device Policy Controller(Android for Work)。GoogleJsonResponseException:404在獲取企業用戶列表期間未找到

HttpTransport sHttpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
JsonFactory sJsonFactory = JacksonFactory.getDefaultInstance(); 

GoogleCredential credentials = new GoogleCredential.Builder().setTransport(sHttpTransport).setJsonFactory(sJsonFactory) 
     .setServiceAccountId(MASTER_SERVICE_ACCOUNT_EMAIL) 
     .setServiceAccountScopes(AndroidEnterpriseScopes.all()) 
     .setServiceAccountPrivateKeyFromP12File(new File(PRIVATE_KEY_P12_FILE_NAME)) 
     .build(); 

AndroidEnterprise sAndroidEnterprise = new AndroidEnterprise(sHttpTransport, sJsonFactory, credentials); 

String userId = sAndroidEnterprise.users().list(enterpriseId, userEmail).execute() 
      .getUser() 
      .get(0) 
      .getId(); 

String activationCode = sAndroidEnterprise.users().generateToken(enterpriseId, userId).execute().getToken(); 

的問題是,我在

String userId = sAndroidEnterprise.users().list(enterpriseId, userEmail).execute() 

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found 
{ 
    "code" : 404, 
    "errors" : [ { 
    "domain" : "global", 
    "location" : "enterpriseId", 
    "locationType" : "parameter", 
    "message" : "No enterprise was found for the given id.", 
    "reason" : "notFound" 
    } ], 
    "message" : "No enterprise was found for the given id." 
} 
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145) 
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) 
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321) 
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1056) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352) 
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469) 

最有趣的事情得到異常的結果方法execute(),如果我把不存在的電子郵件作爲參數USEREMAIL存在方法也不例外execute(),當然方法getUser()返回null。

如何修復此代碼以獲取成功的用戶ID? 對我來說,它看起來像是圖書館或服務器的問題,但我希望我只是做錯了什麼。

請注意:我已登記客戶成功並沒有根據https://developers.google.com/play/enterprise/samples

回答

1

好像你正在調用使用MSA帳戶的用戶()方法認證準備。嘗試使用ESA帳戶進行身份驗證,即您在請求中提及的企業ID。 (您需要爲客戶創建服務帳戶才能進行身份驗證)。問題將得到解決。