我需要製作一個Windows服務,每天將數據庫中的聯繫人導出到我的Google聯繫人帳戶。谷歌聯繫人API:請求的客戶端未授權
由於應用程序是一項服務,該帳戶是我的,我不想/不需要使用瀏覽器身份驗證,但我設法設置了一個服務帳戶。
我測試它,但是,現在,當我請求訪問令牌我得到的「請求的客戶端未授權」的錯誤消息
首先,配置:我有我的「目標」帳戶,該一個我想要導入聯繫人,即[email protected]
在Developer Console中,記錄爲[email protected],我創建了新憑據 - >服務帳戶密鑰爲contactimporter @ mydomain-123456。 iam.gserviceaccount.com;我下載了.p12密鑰並啓用了域名範圍代碼
然後我進入Google Apps帳戶的管理面板,然後點擊安全 - >顯示更多 - >高級設置 - >管理API客戶端訪問
我進入服務accont客戶端ID和 「https://www.google.com/m8/feeds/」 的範圍
最後,代碼:
var _uName = "[email protected]";
var _pWord = "password!"; //[email protected]'s password
var _aSrvE = "[email protected]";
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: Error:"access_denied", Description:"Requested client not authorized.", Uri:"" in Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) in Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) in Google.Apis.Auth.OAuth2.ServiceAccountCredential.d__19.MoveNext()
我想我所做的一切就OK了,我不知道是什麼,檢查更多的:任何幫助,將不勝感激。
你有沒有試過閱讀這張SO票? http://stackoverflow.com/questions/23888276/requested-client-not-authorized –
謝謝,我讀過它,但不幸的是,業主沒有找到一個「真正的」解決方案,他只是設法重構代碼一個我沒有的結構:就我所知,PlusService沒有與聯繫人API等價的功能 –