是否有人拥有Google DirectoryService.Users.List().Execute();在C#/.NET中工作?

是否有人拥有Google DirectoryService.Users.List().Execute();在C#/.NET中工作?,c#,visual-studio-2012,google-api-dotnet-client,google-admin-sdk,C#,Visual Studio 2012,Google Api Dotnet Client,Google Admin Sdk,我已经尝试在我的谷歌应用程序域中列出用户一段时间了。 Python没有问题,但在C#中,我收到一条错误消息: 发生了一个错误: Google.api.Requests.RequestError 错误请求[400] 错误[ 消息[错误请求]位置[-]原因[错误请求]域[全局] ] 我不是任何类型的C#大师,但当我查看Google.api.Admin.directory_v1.cs文件时,我觉得UserResource ListRequest是错误的??? 它在文件的第7349-7352行找到。有人

我已经尝试在我的谷歌应用程序域中列出用户一段时间了。 Python没有问题,但在C#中,我收到一条错误消息: 发生了一个错误: Google.api.Requests.RequestError 错误请求[400] 错误[ 消息[错误请求]位置[-]原因[错误请求]域[全局] ]

我不是任何类型的C#大师,但当我查看Google.api.Admin.directory_v1.cs文件时,我觉得UserResource ListRequest是错误的??? 它在文件的第7349-7352行找到。有人知道它是否还没有在API中实现吗

编辑: 我从为什么我认为Google.api.Admin.directory_v1.cs第7349-7352行中的代码是错误的开始(正如我提到的-我不是C#大师):

守则:
///检索已删除的用户或域中的所有用户(分页)
公共虚拟ListRequest列表(){
返回新的ListRequest(服务);
}

为什么我觉得奇怪: 我看不出在何处将customerid或域作为参数传递给此请求,但在API资源管理器中它是必需的(否则我会在我的原始帖子中收到与上面相同的错误消息)

编辑:我在文件中往下看了一点,我猜第8904行和以后的行正在做我之前查找的事情。我的错

但我还是不能让我的代码工作


我的代码不起作用:
static void Main(字符串[]args)
{
//显示标题并初始化示例。
CommandLine.EnableExceptionHandling();
WriteLine(“列出谷歌应用程序域中的用户!”);
Console.WriteLine(“由Jonas Bergstedt 2013编写”);
//获取域名
Console.Write(“域:”);
string domain=Console.ReadLine();
//注册验证器。
var provider=新的本地应用程序客户端(GoogleAuthenticationServer.Description)
{
ClientIdentifier=,
ClientSecret=“,
};
var auth=新的OAuth2Authenticator(提供者,GetAuthorization);
//创建服务。
var service=new DirectoryService(new BaseClientService.Initializer()
{
Authenticator=auth,
ApplicationName=“列出用户”,
ApiKey=
});
//正在尝试添加域
service.Users.List().Domain=Domain;
用户结果=service.Users.List().Execute();
foreach(results.UsersValue中的用户列表)
{
Console.WriteLine(“-”+list.Name);
}
}
私有静态IAAuthorizationState GetAuthorization(NativeApplicationClient参数)
{
//获取身份验证URL:
IAAuthorizationState=new AuthorizationState(新[]{DirectoryService.Scopes.AdminDirectoryUser.GetStringValue()});
state.Callback=新Uri(NativeApplicationClient.OutOfBandCallbackUrl);
Uri authUri=arg.RequestUserAuthorization(状态);
//请求用户授权(通过打开浏览器窗口):
Process.Start(authUri.ToString());
Console.WriteLine();
控制台。写入(“授权代码:”);
字符串authCode=Console.ReadLine();
//使用授权代码检索访问令牌:
返回参数ProcessUserAuthorization(authCode,state);
}
}

ListRequest具有这些属性。看起来这些属性不是必需的,因此它们不是构造函数的一部分。 您可以执行以下操作:

var listReq = service.Users.List();
listReq.Customer = "CUSTOMER_HERE";
listReq.Domain = "DOMAIN_HERE";
Users results = listReq.Execute();

你能附上你的代码吗?这些行有什么问题吗?为什么看起来不对?@peleyal code添加了!有什么建议吗?谢谢,这很有效!!:)但我不同意这不是强制性的。检查API资源管理器-要求任何一个客户域。对我来说都不是必需的-我同意它看起来不是那样的,但试一下为域或客户确定一个值,然后亲自查看。
static void Main(string[] args)
    {
        // Display the header and initialize the sample.
        CommandLine.EnableExceptionHandling();
        Console.WriteLine("List users in a google apps domain!");
        Console.WriteLine("by Jonas Bergstedt 2013");

        // Get the domainname
        Console.Write("Domain: ");
        string domain = Console.ReadLine();

        // Register the authenticator.
        var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description)
        {
            ClientIdentifier = <myClientId>,
            ClientSecret = <myClientSecret>",
        };

        var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);

        // Create the service.
        var service = new DirectoryService(new BaseClientService.Initializer()
        {
            Authenticator = auth,
            ApplicationName = "List Users",
            ApiKey = <myApiKey>
        });
        // Trying to add the domain
        service.Users.List().Domain = domain;

        Users results = service.Users.List().Execute();

        foreach (User list in results.UsersValue)
        {
            Console.WriteLine("- " + list.Name);
        }
    }
    private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
    {
        // Get the auth URL:
        IAuthorizationState state = new AuthorizationState(new[] { DirectoryService.Scopes.AdminDirectoryUser.GetStringValue() });
        state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
        Uri authUri = arg.RequestUserAuthorization(state);

        // Request authorization from the user (by opening a browser window):
        Process.Start(authUri.ToString());
        Console.WriteLine();
        Console.Write("Authorization Code: ");
        string authCode = Console.ReadLine();

        // Retrieve the access token by using the authorization code:
        return arg.ProcessUserAuthorization(authCode, state);
    }
}
var listReq = service.Users.List();
listReq.Customer = "CUSTOMER_HERE";
listReq.Domain = "DOMAIN_HERE";
Users results = listReq.Execute();