我需要制作一个Windows服务,每天将联系人从数据库导出到我的Google通讯录帐户。
由于应用程序是服务而且帐户是我的,我不想/需要使用浏览器身份验证,但我设法设置了服务帐户。
我正在测试它,但是,现在,当我请求访问令牌时,我收到“请求的客户端未经授权”错误消息
首先,配置:我有我的“目的地”帐户,我想要导入联系人的帐户,即info@mydomain.com
在开发者控制台中,我以info@mydomain.com身份登录,创建了新凭据 - >服务帐户密钥为contactimporter@mydomain-123456.iam.gserviceaccount.com;我下载了.p12密钥并启用了域范围的委派
然后,我进入了Google Apps帐户的“管理”面板,然后进入 安全 - >显示更多 - >高级设置 - >管理API客户端访问
我输入了服务accont客户端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 unoopiùerrori。 ---> Google.Apis.Auth.OAuth2.Responses.TokenResponseException: 错误:“access_denied”,说明:“请求的客户端未经授权。”,Uri:“” in Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务) Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(任务 任务) Google.Apis.Auth.OAuth2.ServiceAccountCredential.d__19.MoveNext()
我想我已经做好了一切,我不知道该怎么检查:任何帮助都会受到赞赏。
答案 0 :(得分:-1)