在 C# 中使用 GMail API 创建标签
Create labels with GMail API in C#
我花了几个小时寻找有关如何使用服务帐户访问 Gmail API 的答案,结果发现我做不到,除非我使用的是随附的 GSuite 帐户全域授权,我来这里是想问你是否有办法使用上述 API and 来实际 创建标签帐户。我正在使用 Visual Studio 2019 和 C#。在“developers.google.com”中有一个名为“试试这个 API”的工具,我可以使用我的 OAuth 2.0 创建一个标签,而且 .NET Quickstart found here 也适用于列表我的标签。但是为什么它不能让我创建标签呢?我已经启用了所有可能的作用域。
这是我遇到的错误:
"Google.GoogleApiException: 'Google.Apis.Requests.RequestError
Request had insufficient authentication scopes. [403]
Errors [
Message[Insufficient Permission] Location[ - ] Reason[insufficientPermissions] Domain[global]" enter image description here
方法 Lables.create 需要权限才能在用户帐户上创建标签。用户必须同意该权限。
错误信息
Google.Apis.Requests.RequestError Request had insufficient authentication scopes.
告诉你用户没有同意适当的范围。用户必须同意以下范围之一
如果您按照快速入门进行操作,那么您可能只包括了 GmailService.Scope.GmailReadonly
。您将需要再次更改范围并请求用户授权。请注意,您所遵循的教程不是针对服务帐户身份验证,而是针对 Oauth2 身份验证。
服务帐号
string ApplicationName = "Gmail API .NET Quickstart";
const string serviceAccount = "xxxxx-smtp@xxxxx-api.iam.gserviceaccount.com";
var certificate = new X509Certificate2(@"c:\xxxxx-api-ed4859a67674.p12", "notasecret", X509KeyStorageFlags.Exportable);
var gsuiteUser = "xxxxx@xxxx.com";
var serviceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(serviceAccount)
{
User = gsuiteUser,
Scopes = new[] { GmailService.Scope.GmailSend, GmailService.Scope.GmailLabels }
}.FromCertificate(certificate);
var credential = new ServiceAccountCredential(serviceAccountCredentialInitializer);
if (!credential.RequestAccessTokenAsync(CancellationToken.None).Result)
throw new InvalidOperationException("Access token failed.");
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
我花了几个小时寻找有关如何使用服务帐户访问 Gmail API 的答案,结果发现我做不到,除非我使用的是随附的 GSuite 帐户全域授权,我来这里是想问你是否有办法使用上述 API and 来实际 创建标签帐户。我正在使用 Visual Studio 2019 和 C#。在“developers.google.com”中有一个名为“试试这个 API”的工具,我可以使用我的 OAuth 2.0 创建一个标签,而且 .NET Quickstart found here 也适用于列表我的标签。但是为什么它不能让我创建标签呢?我已经启用了所有可能的作用域。
这是我遇到的错误:
"Google.GoogleApiException: 'Google.Apis.Requests.RequestError Request had insufficient authentication scopes. [403] Errors [ Message[Insufficient Permission] Location[ - ] Reason[insufficientPermissions] Domain[global]" enter image description here
方法 Lables.create 需要权限才能在用户帐户上创建标签。用户必须同意该权限。
错误信息
Google.Apis.Requests.RequestError Request had insufficient authentication scopes.
告诉你用户没有同意适当的范围。用户必须同意以下范围之一
如果您按照快速入门进行操作,那么您可能只包括了 GmailService.Scope.GmailReadonly
。您将需要再次更改范围并请求用户授权。请注意,您所遵循的教程不是针对服务帐户身份验证,而是针对 Oauth2 身份验证。
服务帐号
string ApplicationName = "Gmail API .NET Quickstart";
const string serviceAccount = "xxxxx-smtp@xxxxx-api.iam.gserviceaccount.com";
var certificate = new X509Certificate2(@"c:\xxxxx-api-ed4859a67674.p12", "notasecret", X509KeyStorageFlags.Exportable);
var gsuiteUser = "xxxxx@xxxx.com";
var serviceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(serviceAccount)
{
User = gsuiteUser,
Scopes = new[] { GmailService.Scope.GmailSend, GmailService.Scope.GmailLabels }
}.FromCertificate(certificate);
var credential = new ServiceAccountCredential(serviceAccountCredentialInitializer);
if (!credential.RequestAccessTokenAsync(CancellationToken.None).Result)
throw new InvalidOperationException("Access token failed.");
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});