也許我根本就沒有得到「它」,「it」是完成這項工作所需的總體設置。ASP.Net中的Google Apis v3 - 「未經授權的客戶端或請求範圍」
我有一個網站,擦傷其他網站的體育賽事。我想從結果中自動創建Google日曆事件,因此我想在我的GMail帳戶的日曆中授予我的Web應用程序讀/寫訪問權限。
我一直試圖在頭上圍繞這個問題一個星期,但我無法讓它工作,並且它破壞了我作爲開發人員的自尊心。
我「明白」的方式是我需要Google API v3服務帳戶,因爲我不需要特定用戶的API密鑰。或者我需要一個簡單的API密鑰(而不是oAuth)?
無論如何,我去服務帳戶。
在我的HomeController我想獲取日曆,所以我知道這一切工作。
public void Calendar()
{
string serviceAccountEmail = "[email protected]";
var certificate = new X509Certificate2(
Server.MapPath("~") + @"\App_Data\key.p12",
"notasecret",
X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential =
new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[]
{
CalendarService.Scope.Calendar
},
User = "MY-GMAIL-EMAIL" // Is this correct?
}
.FromCertificate(certificate));
BaseClientService.Initializer initializer = new BaseClientService.Initializer();
initializer.HttpClientInitializer = credential;
initializer.ApplicationName = "CALENDAR NAME"; // Correct?
var service = new CalendarService(initializer);
var list = service.CalendarList.List().Execute().Items; // Exception :-(
}
我得到的錯誤:
An exception of type 'Google.Apis.Auth.OAuth2.Responses.TokenResponseException' occurred in Google.Apis.dll but was not handled in user code
Additional information: Error:"unauthorized_client", Description:"Unauthorized client or scope in request.", Uri:""
所以我嘗試了一堆東西在谷歌日曆,像製作公開,增加服務帳戶的電子郵件作爲一個讀/寫用戶。
我需要做什麼來授權我的Web應用程序,以便它可以代表我創建事件?
此錯誤的例子是最有可能由於訪問日曆API。將服務帳戶電子郵件地址添加到您的日曆中,這可能會讓您訪問您的日曆。選中此鏈接https://developers.google.com/admin-sdk/directory/v1/guides/delegation#delegate_domain-wide_authority_to_your_service_account。另外,如果您不想訪問用戶日曆而不是服務帳戶,則可以使用Oauth – SGC 2014-12-04 17:37:36