我正在拼命尝试从Java访问Google云端存储。我的挑战是我应该创建一个通用库,并且基于浏览器的auth是不可能的。
无论我做什么,它总是告诉我“401 Unauthorized”。我肯定使用正确的凭据,...我的Java版本是1.7
以下是代码:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(new JacksonFactory())
.setClientSecrets("clientid", "clientsecret").build();
storage = new Storage.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName(
"test-name")
.build();
相应的客户端ID和密码设置如控制台中所示;但是,我总是告诉我“需要登录”。该库需要在工作进程中使用,因此有人无法在浏览器窗口中授权该应用程序......
谢谢,
马里奥
答案 0 :(得分:1)
我相信就在最近我们亲自讨论过这个问题实际上是通过使用此处记录的Google服务帐户解决的: https://developers.google.com/accounts/docs/OAuth2ServiceAccount
凭据的构建方式如下:
String emailAddress = "123456789000-abc123def456@developer.gserviceaccount.com";
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12"))
.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
.build();