如何在谷歌管理目录API上使用2腿认证



我正试图编写代码,以获得所有用户帐户在我们的谷歌应用程序域使用谷歌管理目录API与2腿OAuth。不幸的是,我几乎找不到目录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。然而,我就是做不到。谁能帮我指出我的问题?谢谢。

另一个问题:用户id (xoauth_requestor_id参数)是必需的2LO目录API请求?我知道在使用2LO时,其他API需要此参数,但不清楚Directory和Provisioning API是否需要此参数。

顺便说一句:我想从头开始构建2LO HTTP请求,而不使用任何库,但我还没有开始。我需要确保2LO工作在目录API请求

如果有人偶然发现这一点,谷歌在原始帖子发布前一个月就弃用了配置API。我最近有同样的问题,当试图授权API访问我的谷歌应用程序域使用管理目录API。在最终弄清楚之后,我决定把它记录下来,实际上我正在整理一个关于如何从Google Apps Directory API和OAuth 2.0中获得一些意义的系列…请记住,Google现在强烈鼓励使用OAuth 2.0,所以2LO是过去的事情,上面的"修复"可能不再相关。

如果人们不想点击链接,我建议使用Google的API浏览器来了解如何使用特定的API制定成功的POST/GET请求。这节省了我大量的时间。另外,需要预先警告的是,如果您试图使用directory.users.list API,并且域中有数千个帐户,那么检索用户将花费很长时间。我建议从directory.users.get API开始检索一个特定的用户,并检查一个成功的API请求/响应是什么样子的。

相关内容

  • 没有找到相关文章

最新更新