Google api 如何在Google管理目录API上使用两条腿的oauth

Google api 如何在Google管理目录API上使用两条腿的oauth,google-api,google-apps,google-api-client,google-api-dotnet-client,Google Api,Google Apps,Google Api Client,Google Api Dotnet Client,我正在尝试编写代码,使用带有两条腿OAuth的Google管理目录API获取我们Google应用程序域中的所有用户帐户。不幸的是,我几乎找不到目录API的任何文档或示例代码。我尝试了下面的代码: AdminService adminService = new AdminService(); Google.Apis.Authentication.OAuth2LeggedAuthenticator authenticator= new Google.Apis.Authentication.OAu

我正在尝试编写代码,使用带有两条腿OAuth的Google管理目录API获取我们Google应用程序域中的所有用户帐户。不幸的是,我几乎找不到目录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)
{ ...  }
但我犯了个错误。 然后我尝试了使用旧GData库的低级方法

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错误

基于目录API的源代码,我认为支持2LO。然而,我就是不能让它工作。有人能帮我指出我的问题吗?谢谢

另一个问题:2LO目录API请求是否需要userid(xoauth\u requestor\u id参数)?我知道在使用2LO时,其他API需要此参数,但不清楚目录和配置API是否需要此参数


顺便说一句:我想从头开始构造2LOHTTP请求,而不使用任何库,但我还没有开始。我需要确保2LO能够处理目录API请求。

如果其他人偶然发现了这一点,Google在最初发布之前大约一个月就不推荐使用该配置API。我最近在尝试使用Admin Directory API授权API访问我的Google Apps域时遇到了同样的问题。在最终弄明白之后,我决定将其记录下来,实际上我正在整理一系列关于如何。。。请记住,谷歌现在强烈鼓励使用OAuth 2.0,因此2LO已经成为过去,上面的“修复”可能不再相关


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

如果其他人偶然发现了这一点,谷歌在发布原始帖子前大约一个月就不推荐使用该配置API。我最近在尝试使用Admin Directory API授权API访问我的Google Apps域时遇到了同样的问题。在最终弄明白之后,我决定将其记录下来,实际上我正在整理一系列关于如何。。。请记住,谷歌现在强烈鼓励使用OAuth 2.0,因此2LO已经成为过去,上面的“修复”可能不再相关


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

2腿Oauth 1.0已被弃用。除非您有非常具体的原因使用它,否则您应该使用OAuth 2.0,可能会使用服务帐户。感谢Jay,我发现了这个问题,“API密钥”参数丢失,2腿OAuth 1.0不推荐使用。除非您有非常具体的原因使用它,否则您应该使用OAuth 2.0,可能是服务帐户。感谢Jay,我发现了问题,“API key”参数丢失。我想使用目录API获取域的用户列表。上面的方法可行,但我尝试使用单腿身份验证。它不起作用。我对此毫无疑问。1.1LO是基于oauth1.0(已弃用)还是也可以与oauth2.0一起使用?2.[admin.google.com]在安全->高级设置->管理Oauth客户端访问中,我添加了API客户端,该客户端具有访问数据的权限。但是当我向那个API客户机发出API请求时,我总是被禁止。OAuth2.0支持此流吗?我想使用目录API获取域的用户列表。上面的方法可以工作,但我尝试使用单腿身份验证来获取此流。它不起作用。我对此毫无疑问。1.1LO是基于oauth1.0(已弃用)还是也可以与oauth2.0一起使用?2.[admin.google.com]在安全->高级设置->管理Oauth客户端访问中,我添加了API客户端,该客户端具有访问数据的权限。但是当我向那个API客户机发出API请求时,我总是被禁止。OAuth2.0是否支持此流?