2

我正在尝试使用谷歌 API 来阅读电子邮件,但我一再未能获得良好的结果。它应该是在后台定期运行的服务器-> 服务器帐户,但我无法连接。代码是基本的:

GoogleCredential credential;
using (var stream = new FileStream("Content/service_credential.json", FileMode.Open, 
                                   FileAccess.Read))
{
    credential = GoogleCredential.FromStream(stream);
    credential = credential.CreateScoped(new[] { GmailService.Scope.GmailModify });
}

var service = new GmailService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "try-apis",
});


ListLabelsResponse response = service.Users.Labels.List("me").Execute();
foreach (Label label in response.Labels.OrderBy(p => p.Name))
{
    Console.WriteLine(label.Id + " - " + label.Name);
}

Console.Read();

错误:

Additional information: Google.Apis.Requests.RequestError

Bad Request [400]

Errors [

    Message[Bad Request] Location[ - ] Reason[failedPrecondition] Domain[global]

]

在 IAM 设置中,我使用的帐户具有完全权限:

在此处输入图像描述

该帐户具有完全权限:

在此处输入图像描述

同样,更完整的权限:

在此处输入图像描述

我错过了什么?我找不到任何仅在连接到收件箱时有意义的代表性 .Net 请求。

4

3 回答 3

1

我有同样的问题。上传到 Google Drive (Sheets) 的 XLSX 文档不支持 Google Sheets API。将数据复制到直接在 Google 表格中创建的表格中解决了该问题。

于 2019-08-27T20:51:37.947 回答
0

指定要为其获取消息的用户。在你的情况下,它看起来像这样:

credential = GoogleCredential
                .FromStream(stream)
                .CreateScoped(new[]{ GmailService.Scope.GmailModify })**
                .CreateWithUser("me") **;
于 2019-10-08T18:00:09.753 回答
0

我以前从未在 IAM 中看到授予域范围委派的方法。

通常,开发人员 ID 在域 CPanel 中被列入白名单,如这些文档中所述

(“那么 Google Apps 域的管理员必须完成以下步骤”的段落。)

于 2016-09-01T15:54:45.467 回答