尝试掌握如何在C#中使用google-admin-sdk (有一个可能的职位空缺)
我已经成功地在Python2.7中创建了用于创建用户和将用户添加到组中的代码,作为命令行工具。
但是雇主问我是否可以用C#做同样的事情。我想我会掌握它的诀窍,但希望在如何开始的时候能得到一些帮助。我已经安装了Visual Studio Express 2012 for Desktop并下载了: google-admin-directory_v1-rev6-csharpp-1.4.0-beta.zip google-api-dotnet-client-1.4.0-beta-samples.zip google-api-dotnet-client-1.4.0-beta.zip
但是我找不到任何(对我来说是可以理解的)样本。
有人愿意给我一些好的建议吗?将不胜感激。:) /Jonas
编辑:到目前为止添加我的代码!
using System;
using System.Diagnostics;
using System.Linq;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
using Google.Apis.Samples.Helper;
using Google.Apis.Services;
using Google.Apis.Util;
using Google.Apis.Admin.directory_v1;
using Google.Apis.Admin.directory_v1.Data;
namespace Bergstedts.ListUsers
{
public class Program
{
static void Main(string[] args)
{
// Display the header and initialize the sample.
CommandLine.EnableExceptionHandling();
CommandLine.DisplayGoogleSampleHeader("Lists all Users");
// Register the authenticator.
var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description)
{
ClientIdentifier = "my ID",
ClientSecret = "my secret"
};
var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
// Create the service.
var service = new DirectoryService(new BaseClientService.Initializer()
{
Authenticator = auth,
ApplicationName = "List Users",
});
service.Users.List().Domain = "mydomain.com";
Users results = service.Users.List().Execute();
Console.WriteLine("Users:");
foreach (User list in results.UsersValue)
{
Console.WriteLine("- " + list.Name);
}
Console.ReadKey();
}
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.Write(" Authorization Code: ");
string authCode = Console.ReadLine();
Console.WriteLine();
// Retrieve the access token by using the authorization code:
return arg.ProcessUserAuthorization(authCode, state);
}
}
}编辑:找到添加域名的方法:
service.Users.List().Domain = "mydomain.com";但我仍然收到相同的错误消息:已发生错误: Google.Apis.Requests.RequestError错误请求400错误[ MessageBad请求位置- ReasonbadRequest域全局]
发布于 2013-07-24 02:25:24
现在这个问题已经解决了!像这样拆分list().Execute()!从@peleyal获得帮助
var listReq = service.Users.List();
listReq.Domain = domain;
Users results = listReq.Execute();发布于 2014-02-20 03:28:32
这是从域获取用户的另一种方式(只是有点不同)
String serviceAccountEmail = "xxxxxxx@developer.gserviceaccount.com";
var certificate = new X509Certificate2(@"xxxxx.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser},
User = "your USER",
}.FromCertificate(certificate));
var service = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "name of your app",
});
var listReq = service.Users.List();
listReq.Domain = "your domain";
Users allUsers = listReq.Execute();
foreach(User myUser in allUsers.UsersValue){
Console.WriteLine("*" + myUser.PrimaryEmail);
}
Console.ReadKey();对于需要更多信息的人,可以访问Admin-SDK Users: list和Directory API: Limits and Quotas
https://stackoverflow.com/questions/17722334
复制相似问题