【发布时间】:2017-08-04 17:01:12
【问题描述】:
当我尝试使用服务帐户授权 gmail api 时出现以下错误
“客户端未经授权无法使用此方法检索访问令牌”
static async Task MainAsync()
{
sstageEntities db = new sstageEntities();
//UserCredential credential;
Dictionary<string, string> dictionary = new Dictionary<string, string>();
String serviceAccountEmail =
"xxx.iam.gserviceaccount.com";
var certificate = new X509Certificate2(
AppDomain.CurrentDomain.BaseDirectory +
"xxx-8c7a4169631a.p12",
"notasecret",
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
//string userEmail = "user@domainhere.com.au";
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
User = "xxx@xxx.com",
Scopes = new[] { "https://mail.google.com/" }
}.FromCertificate(certificate)
);
// Create Gmail API service.
var gmailService = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define parameters of request.
var emailListRequest = gmailService.Users.Messages.List("xxx@xxx.com");
emailListRequest.LabelIds = "INBOX";
emailListRequest.IncludeSpamTrash = true;
emailListRequest.Q = "from:bpm@xxx.co.in is:unread";
//Get our emails
var emailListResponse = await emailListRequest.ExecuteAsync();
我正在使用我在创建服务帐户时获得的 p12 密钥。但是当我运行我的控制台应用程序时出现以下错误。任何帮助将不胜感激。
提前致谢!
【问题讨论】:
-
您是否将服务帐户添加到 gsuite? developers.google.com/identity/protocols/…
-
那么只有组织的管理员才能做到这一点?我只是一个员工?
-
是的,我认为这是只有管理员才能为您做的事情。
-
Hey DamlmTo 是的,管理员现在必须授予访问权限,这一切都解决了,非常感谢