![](/img/trans.png)
[英]OAuth {"error":"invalid_client"} grant type "client credential" - C# ASP.Net Web API
[英]C#: Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Error:“invalid_client”, Description:“The OAuth client was not found.”, Uri:“”
我正在嘗試將Google日歷集成到我的Web應用程序中。 我已經成功集成了Google日歷,並且能夠從我的Visual Studio IIS Express服務器讀取事件。 但是,當我在Web服務器上發布和上傳應用程序時,我開始收到錯誤消息
Google.Apis.Auth.OAuth2.Responses.TokenResponseException:錯誤:“ invalid_client”,說明:“找不到OAuth客戶端。”,Uri:“”
我的密碼
var certificate = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.p12"), "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(/*My Service Account */)
{
Scopes = new string[] { CalendarService.Scope.Calendar }
}.FromCertificate(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Test",
});
EventsResource.ListRequest request = service.Events.List("primary");
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
我已經通過使用.JSON密鑰而不是.P12密鑰解決了我的問題。
我已經從Google API控制台下載了新的.JSON密鑰。 並像下面這樣更改一點代碼。
GoogleCredential credential;
using (var stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.json"), FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(new string[] { CalendarService.Scope.Calendar });
}
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Test",
});
EventsResource.ListRequest request = service.Events.List("primary");
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
有關更多詳細信息,請訪問評論部分的鏈接。 謝謝DaImTo。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.