2016-11-29 1 views
5

Я хочу использовать API Java Google Drive. Я попробовал этот код:com.google.api.client.auth.oauth2.TokenResponseException: 401 Неавторизованный

public Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException 
    { 
     HttpTransport httpTransport = new NetHttpTransport(); 
     JacksonFactory JSON_FACTORY = new JacksonFactory(); 

     GoogleCredential credential = new GoogleCredential.Builder() 
      .setTransport(httpTransport) 
      .setJsonFactory(JSON_FACTORY) 
      .setServiceAccountId("[email protected]") 
      .setServiceAccountPrivateKeyFromP12File(new java.io.File("C:\\buffer\\sonora project-3256770463ed.p12")) 
      .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN)) 
      .setServiceAccountUser("[email protected]") 
      .build(); 

     Drive service = new Drive.Builder(httpTransport, JSON_FACTORY, null) 
      .setApplicationName("FileListAccessProject") 
      .setHttpRequestInitializer(credential).build(); 

     return service; 
    } 

Но я получаю эту ошибку:

An error occurred: com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized 

Я использую эту конфигурацию:

enter image description here

Можете ли вы дать некоторое представление о том, как я могу это исправить ?

+0

Я надеваю Думаю, ты можешь используйте setServiceAccountUser, если только его учетная запись администратора домена и вы не добавили учетную запись службы в учетную запись администратора, а пользователь, о котором идет речь, также является пользователем учетной записи администратора. – DaImTo

+0

Можете ли вы дать общую ошибку и исключение, которое она бросает? – Coder

ответ

0

Исходя из этого SO question, одна из причин, по которой вы получаете ошибку 401, заключается в том, что учетная запись службы, которую вы используете, не имеет доступа к учетной записи диска, связанной с вашим адресом Gmail. Поэтому, если вы хотите иметь доступ к файлам, которые он загружает, вы должны предоставить им доступ к ним, хотя учетная запись службы.

Вот другие SO вопросы, которые я думаю, может помочь вам понять больше учетной записи службы

+0

Спасибо за ответ, но я пока не могу найти решение. Можете ли вы дать более подробную информацию? –