我们通过了验证,开始在 breess.com 服务上使用 calendar.events.readonly
范围。
我们创建了具有广泛授权的服务帐户
在 G Suite 域的管理控制台中添加了范围 https://www.googleapis.com/auth/calendar.events.readonly
用户帐户 xxxxx@xxx.com
授予其日历访问权限
一切看起来都配置好了。下面的代码在主机上执行并返回错误:
<块引用>错误:“unauthorized_client”,描述:“客户端无权使用此方法检索访问令牌,或者客户端未获得任何请求范围的授权。”,Uri:“”
我们错过了什么吗?您能指导我们解决问题吗?
额外说明:
var credential = GoogleCredential
.FromFile("breess-7798c393d5b0.json")
.CreateScoped(new[] { CalendarService.Scope.CalendarEventsReadonly })
.createwithuser("xxx@xxx.xxx");
var calendarService = new CalendarService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = "BREESS" });
var request = calendarService.Events.List(calendarId);
var events = await request.ExecuteAsync();
答案 0 :(得分:0)
客户端无权使用此方法检索访问令牌,或者客户端未获得任何请求范围的授权。
谷歌授权Oauth的方式有3种。他们每个人都有自己类型的凭证文件和使用它们所需的代码。
在 Google 开发者控制台上创建项目时,您需要确保已创建服务帐户凭据。然后,您需要确保您使用的是用于服务帐户凭据的代码
var scopes = new[] { CalendarService.Scope.CalendarEventsReadonly }
GoogleCredential credential;
using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(scopes);
}
credential.User = "domainuser@yourdomain.com";
// Create the Calendar service.
return new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Calendar Service account Authentication Sample",
}
);
我没有发现您的代码有任何重大错误,所以我怀疑问题在于您没有正确类型的凭据文件。