我已经下载了Java的admin cmd行示例,它与oAuth配合良好,我能够创建用户和组。我在安全设置中也启用了管理SDK API使用。
但我必须使用旧的ClientLogin机制来创建用户和组。
当请求Authorization Token时,Client Login会返回一个值,我最终会在http请求头中设置该值并调用远程服务。
但我有
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
我使用客户端登录,如下所示。
ClientLogin authenticator = new ClientLogin();
authenticator.authTokenType = "apps";
authenticator.username = "foo@foo.com";
authenticator.password = "bar123#";
authenticator.transport = GoogleNetHttpTransport.newTrustedTransport();
final Response response = authenticator.authenticate();
Directory client = new Directory.Builder(GoogleApacheHttpTransport.newTrustedTransport(), JSON_FACTORY, new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest httpRequest) throws IOException {
httpRequest.getHeaders().setAuthorization(response.getAuthorizationHeaderValue());
}
}).setApplicationName(APPLICATION_NAME).build();
上面的客户端实例比我用来创建用户或组的要多。
Group group = new Group();
group.setEmail("foo@foo.com");
group.setName("bar group");
group.setDescription("bar group");
client.groups().insert(group).execute();
如果我在控制台上打印响应.getAuthorizationHeaderValue(),我可以看到一个长字符串值。
我使用的是谷歌api服务管理员的directory_v1-rev16-1.16.0-rc版本
如果有人能指出我的错误,我将不胜感激。
新的管理SDK API不支持不推荐使用的ClientLogin。您需要使用OAuth 2.0身份验证。