在 c# 中使用 gmail API 修改消息标签时权限不足 [403] 错误
Posted
技术标签:
【中文标题】在 c# 中使用 gmail API 修改消息标签时权限不足 [403] 错误【英文标题】:Insufficient Permission [403] error while modifying the Message Label using gmail API in c# 【发布时间】:2015-10-18 13:09:48 【问题描述】:我正在尝试使用 gmail api 阅读 gmail 邮件消息,并且在阅读邮件后,我正在删除消息标签,因此我不需要再次处理它。我能够成功阅读邮件,但是当我尝试修改邮件标签时
(service.Users.Messages.Modify(mods, userId, messageId).Execute();
)
然后我收到错误消息:
发生错误:Google.Apis.Requests.RequestError 权限不足 [403] 错误 [ 消息[权限不足] 位置[ - ] 原因[insufficientPermis sions] 域[全局]> ]。
我无法弄清楚,可能出了什么问题? 提前致谢。
【问题讨论】:
您需要在您的范围内使用https://mail.google.com/
或https://www.googleapis.com/auth/gmail.modify
才能修改消息。你有吗?
我不明白你。你能详细说明一下吗
当然!显示所有相关的 c#-code :) 仅从错误消息很难判断出什么是错误的。
我找到了根本原因。我已将权限范围设为 GmailReadOnly。它的访问级别应为 GmailModify
【参考方案1】:
您需要将权限添加到范围变量和 然后删除文件 storedCredentials (C:\Users\Administrateur.credentials.. )
【讨论】:
它帮助我解决了我的问题。不知道范围保存在凭据文件中。谢谢你的帮助。【参考方案2】:我在使用服务帐户 API 密钥的控制台应用程序中遇到了类似的问题。添加所有必要的范围后,如上面Tholle 所述,必须在 Google 管理控制台中使用必要的权限更新应用程序。为此,请确保您转到管理控制台并删除当前应用并再次执行该程序以获取具有更新范围的新权限的新令牌。
实现相同目的的另一种方法是执行上面提到的Mohamed。即从“...User\[UserName]\.credetials\[apiCredentialName].json”文件夹中删除JSON文件。这将强制应用程序进行身份验证并获取新令牌。希望这对某人有所帮助:-)
【讨论】:
【参考方案3】:我通过更改 Scopes 变量解决了这个问题。我假设您从仅允许只读访问的 QuickStart 模板开始。您可以按如下方式更改范围:
using Google.Apis.Gmail.v1.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace GmailQuickstart
class Program
// CHANGE YOUR SCOPE HERE AND DELETE YOUR CREDENTIALS.JSON FILE IN THE PROJECT.
static string[] Scopes = GmailService.Scope.GmailReadonly, GmailService.Scope.GmailModify ;
static string ApplicationName = "Gmail API .NET Quickstart";
提醒:更改范围并删除您的credentials.json后,请再次从gmail api重新验证您的访问权限。
希望对你有用!
【讨论】:
以上是关于在 c# 中使用 gmail API 修改消息标签时权限不足 [403] 错误的主要内容,如果未能解决你的问题,请参考以下文章
带有 MimeKit、C# Winforms 和 Google API 的 Gmail 草稿(带附件的 HTML)