谷歌通讯录 API:请求的客户端未获得授权

本文关键字:授权 客户端 通讯录 API 请求 谷歌 | 更新日期: 2023-09-27 18:34:51

我需要创建一个Windows服务,每天将联系人从数据库导出到我的Google联系人帐户。

由于该应用程序是服务并且帐户是我的,因此我不想/需要使用浏览器身份验证,但是我设法设置了一个服务帐户。

正在测试它,但现在,当我请求访问令牌时,我收到"请求的客户端未授权"错误消息

首先,配置:我有我的"目标"帐户,我希望导入联系人的帐户,这是 info@mydomain.com

在开发人员控制台中,以 info@mydomain.com 身份登录,我创建了新凭据 ->服务帐户密钥作为 contactimporter@mydomain-123456.iam.gserviceaccount.com;我下载了 .p12 密钥并启用了全网域委派

然后,我进入了Google Apps帐户的管理面板,然后安全性 -> 显示更多 -> 高级设置 -> 管理 API 客户端访问

我输入了服务客户端 ID 和"https://www.google.com/m8/feeds/"作为范围

接口范围

最后,代码:

var _uName = "info@mydomain.com";
var _pWord = "password!";           //info@mydomain.com's password
var _aSrvE = "contactimporter@mydomain-123456.iam.gserviceaccount.com";
var certificate = new X509Certificate2(@"C:'Test'GoogleContactsExporter-123456789.p12", "notasecret", X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential(
           new ServiceAccountCredential.Initializer(_aSrvE)
           {
               Scopes = new string[] { "https://www.google.com/m8/feeds"},
               User = _uName
           }.FromCertificate(certificate));
var task = credential.RequestAccessTokenAsync(new CancellationToken());
task.Wait();

task.Wait()我得到这个异常:

System.TypeInitializationException: L'inizializzatore di tipo di 'LibraryTest.GoogleContactsHelper' ha generato un'eccezione.---> System.AggregateException: Si sono verificati uno o più errori.---> Google.Apis.Auth.OAuth2.Responses.TokenResponseException: 错误:"access_denied", 描述:"请求的客户端未授权。", uri:"> Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务(在 Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task 任务(在 Google.Apis.Auth.OAuth2.ServiceAccountCredential.d__19.移动下一个((

我想我已经做得很好,我不知道要检查什么:任何帮助将不胜感激。

谷歌通讯录 API:请求的客户端未获得授权

您使用旧的Google API授权方法。我不知道这次是否支持。尝试使用 OAuth 2.0 授权 Google OAuth 2.0

希望这有所帮助。

安德烈亚斯