【发布时间】:2014-08-05 08:03:32
【问题描述】:
我正在关注 Google 提供的有关如何通过 API 创建用户的文档,但我无法弄清楚我缺少什么。
这是我正在使用的代码:
string SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"myfile.p12";
string SERVICE_ACCOUNT_EMAIL = "...@developer.gserviceaccount.com";
void CreateUser()
{
var certificate = new X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(SERVICE_ACCOUNT_EMAIL)
{
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser }
}.FromCertificate(certificate));
var service = new DirectoryService(
new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "apitest"
});
var user = new Google.Apis.Admin.Directory.directory_v1.Data.User()
{
Name = new Google.Apis.Admin.Directory.directory_v1.Data.UserName()
{
GivenName = txtName.Text,
FamilyName = txtFamilyName.Text
},
Password = txtPasword.Text,
PrimaryEmail = txtEmail.Text
};
try
{
var result = service.Users.Insert(user).Execute();
}
catch (Exception ex)
{
}
}
此时我总是得到:
Google.Apis.Requests.RequestError
Not Authorized to access this resource/api [403]
Errors [
Message[Not Authorized to access this resource/api] Location[ - ] Reason[forbidden] Domain[global]
]
我已启用 Admin SDK API 并创建了一个服务帐户,这就是我在这里使用的帐户。
【问题讨论】:
-
注意我什至不确定你能做到这一点。假设您可以服务帐户需要访问您尝试将用户添加到的任何域。您可以获取服务帐户电子邮件地址并将其添加为管理员,为其授予添加用户所需的权限。
标签: api oauth-2.0 google-api-dotnet-client