Google API-身份验证设置和.NET客户端
我正试图使用谷歌API从我的C#客户端应用程序中实现两件事Google API-身份验证设置和.NET客户端,api,authentication,Api,Authentication,我正试图使用谷歌API从我的C#客户端应用程序中实现两件事 列出我的谷歌目录的所有用户 为每个用户获取所有电子邮件的元数据 然而,我的服务帐户配置似乎给我带来了问题。这就是我所做的 在console.cloud.google.com中创建项目 从API和服务中启用管理SDK和Gmail API 创建了具有域范围委派的服务帐户,并获得了credentials.json文件 4.在admin.google.com上,我访问了安全/API控件并管理域范围的委派。从这里,我从我的服务帐户客户端id
- 列出我的谷歌目录的所有用户
- 为每个用户获取所有电子邮件的元数据
您不能任意从系统中没有现有令牌的用户检索数据。有效执行您尝试的操作的最简单方法是:当用户登录到您的站点时,将来自登录的电子邮件存储在您自己的数据库中,这样您就可以访问令牌以发出请求。以澄清更多信息。1.Google使用OAuth,所以我认为您不能使用基本身份验证。2.如果您遵循OAuth流程,您将需要请求一个代码,并使用该代码从服务器获取令牌。我认为服务帐户和域范围委托的目的正是为了能够执行这些操作。例如,此示例显示如何更新所有用户的电子邮件签名。也许我误解了什么?你是想获取服务帐户电子邮件还是所有使用你的应用程序的用户的电子邮件应用程序将分析我的谷歌目录中所有用户的电子邮件元数据。为此,我使用一个服务帐户1)列出我目录中的所有用户2)供每个用户分析他们的电子邮件元数据
static void Main(string[] args)
{
using (var stream =
new FileStream("..\\..\\..\\credentials.json", FileMode.Open, FileAccess.Read))
{
var credential = GoogleCredential.FromFile("..\\..\\..\\credentials.json");
var dirservice = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "testbuildingnomiproductname",
});
var listReq = dirservice.Users.List();
Users allUsers = listReq.Execute();
int counter = 0;
foreach (User myUser in allUsers.UsersValue)
{
Console.WriteLine("*" + myUser.PrimaryEmail);
counter++;
}
Console.WriteLine(counter);
Console.ReadKey();
}
}