我正在尝试使用带有 2 Legged OAuth 的 Google Admin Directory API 编写代码来获取我们的 Google Apps 域中的所有用户帐户。不幸的是,我几乎找不到任何目录 API 的文档或示例代码。我尝试了下面的代码:
AdminService adminService = new AdminService();
Google.Apis.Authentication.OAuth2LeggedAuthenticator authenticator= new Google.Apis.Authentication.OAuth2LeggedAuthenticator(mydomainName, domainConsumerSecret, adminId, mydomainName);
UsersResource usrRes = new UsersResource(adminService, authenticator);
UsersResource.ListRequest listReq = usrRes.List();
Google.Apis.Admin.directory_v1.Data.Users allUsers = listReq .Fetch();
foreach (Google.Apis.Admin.directory_v1.Data.User usr in allUsers.UsersValue)
{ ... }
但我得到了 401 未经授权的错误。然后我尝试了使用旧 GData Lib 的低级方式。
Google.GData.Client.OAuth2LeggedAuthenticator authenticator = new OAuth2LeggedAuthenticator("MyAPP", mydomainName, domainConsumerSecret,adminId, mydomainName, "HMAC-SHA1");
HttpWebRequest request = authenticator.CreateHttpWebRequest("GET", new Uri("https://www.googleapis.com/admin/directory/v1/users?domain=mydomain.com"));
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
上面的代码得到了同样的 401 错误。
根据 Directory API 的源代码,我认为支持 2LO。但是,我就是无法让它发挥作用。任何人都可以帮助指出我的问题吗?谢谢。
另一个问题:2LO 目录 API 请求需要用户 ID(xoauth_requestor_id 参数)吗?我知道使用 2LO 时其他 API 需要此参数,但不清楚 Directory and Provisioning API 是否需要此参数。
顺便说一句:我想在不使用任何库的情况下从头开始构建 2LO HTTP 请求,但我还没有开始。我需要确保 2LO 可以处理 Directory API 请求。