1

当我尝试在谷歌Apps域名模拟用户使用 setServiceAccountUser()验证谷歌云端硬盘API我得到尽可能冒充用户失败(Java客户端)

响应

com.google.api.client.auth.oauth2.TokenResponseException:403 OK { “error”:“access_denied”,“error_description”:“请求的客户端 未授权。” }

下面是我的代码:

GoogleCredential credential = new GoogleCredential.Builder() 
          .setTransport(httpTransport) 
          .setJsonFactory(jsonFactory) 
          .setServiceAccountId(SERVICE_ACCOUNT_ID) 
          .setServiceAccountUser("[email protected]") 
          .setServiceAccountScopes(scope) 
          .setServiceAccountPrivateKey(privateKey) 
          .build(); 
Drive service = new Drive.Builder(httpTransport, jsonFactory,null).setHttpRequestInitializer(credential).setApplicationName(AppName).build(); 
File body = new File(); 
body.setTitle("Export"); 
body.setMimeType("application/vnd.google-apps.spreadsheet"); 
service.files().insert(body).execute(); 

提前感谢!

Ram Balaji Subbaiyan。

+0

如果您的应用程序访问驱动器,则应包含范围。否则它会抛出这个错误。您可以尝试检查此链接http://stackoverflow.com/questions/27035665/gmail-api-service-accounts-return-403-error – KRR

回答

0

错误是因为不正确的服务帐户用户

setServiceAccountUser("[email protected]in.com") 

这里提到应有的域级别访问权限的用户帐户的抛出。还请尝试为服务帐户启用域级别委托