使用客户端登录的Google Admin SDK操作即使使用Auth Token也无法使用403代码

时间:2013-11-28 18:20:09

标签: google-api google-admin-sdk

我已经为Java下载了admin-cmd-line-sample,并且使用oAuth工作正常,我可以创建用户和组。我在安全设置中启用了Admin SDK以及API使用。

但我必须使用旧的ClientLogin机制来创建用户和组。

当要求授权令牌时,客户端登录会返回一个值,我最终在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();
  

如果我在控制台上打印 response.getAuthorizationHeaderValue() ,我   可以看到长字符串值。

我正在使用google-api-services-admin的版本directory_v1-rev16-1.16.0-rc

如果有人可以指出我出错的地方,我会非常感激。

1 个答案:

答案 0 :(得分:1)

新的Admin SDK API不支持已弃用的ClientLogin。您需要使用OAuth 2.0身份验证。