我正在尝试从JSP中的GAE应用程序中调用Directory APIs。该应用程序已在AppSpot上运行。我想检索用户所属的所有组织单位。不幸的是,我在提出请求时收到404代码,我不明白为什么。
ArrayList<String> scopes = new ArrayList<String>();
scopes.add("https://www.googleapis.com/auth/admin.directory.user");
AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService();
AppIdentityService.GetAccessTokenResult accessToken = appIdentity.getAccessToken(scopes);
URL url = new URL("https://www.googleapis.com/admin/directory/v1/users/myuser@mygoogleappsdomain.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Authorization", "OAuth " + accessToken.getAccessToken());
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
out.print("OK");
}
else {
out.print(connection.getResponseCode());
}
您可以想象此代码段打印404.基本上我正在关注GAE文档中提供的example。我究竟做错了什么?谢谢。
编辑:如果我只是拨打以下网址之一,我会收到403状态代码。我的OAuth身份验证有什么问题吗?
https://www.googleapis.com/admin/directory/v1/users?domain=mydomain https://www.googleapis.com/admin/directory/v1/users
答案 0 :(得分:1)
您的代码仅提供应用标识。您还需要获得用户的授权才能访问其目录信息。
如果您按照提供的链接进行操作,请指出:All requests to the Directory API must be authorized by an authenticated user
。
因此,您需要通过OAuth 2身份验证+授权程序向您的用户发送,您将要求他们进行目录API访问。如果您只需要对用户列表进行只读访问,那么您需要申请https://www.googleapis.com/auth/admin.directory.user.readonly
范围。