我按照说明使用Java命令行示例代码(CalendarSample.java)。
我正在使用服务帐户和本地存储的密钥文件进行身份验证。我试图避免使用OAuth 2并且只是以编程方式进行身份验证。
GoogleCredential.Builder builder = new GoogleCredential.Builder();
builder.setTransport(httpTransport);
builder.setJsonFactory(JSON_FACTORY);
builder.setServiceAccountId(ACCOUNT_EMAIL);
builder.setServiceAccountScopes(scopes);
builder.setServiceAccountPrivateKeyFromP12File(new File("key.p12"));
credential = builder.build();
其中ACCOUNT_EMAIL是我从Google控制台复制的长字符串,类似于
331155436243-he8e67ujkss8fgdj4di1lb7vjl4h7p6k@developer.gserviceaccount.com
我运行代码,我看到输出如:
摘要:测试日历2
但是当我使用我自己的谷歌帐户的日历时,我没有看到新的日历。我注释掉了删除日历的示例代码,当我再次运行它来显示现有的日历时,它仍会显示
摘要:测试日历2
现在,是因为它在某个新帐户中创建日历(可能通过上面的ACCOUNT_EMAIL访问)而不是在我的Gmail帐户中创建?
如果我尝试
builder.setServiceAccountId("my.own.account@gmail.com")
或
builder.setServiceAccountUser("my.own.account@gmail.com")
授权失败。
我做错了什么?