当前位置: 首页 > 知识库问答 >
问题:

Google Calendar API服务帐户错误401无效凭据

宓昂雄
2023-03-14

我试图创建一个谷歌日历服务帐户。

以下是我的证件:

以下是我的服务帐户定义(已启用服务帐户的站点范围委托):

        string userName = "xxx@yyy.it";
        string[] Scopes = { CalendarService.Scope.Calendar, CalendarService.Scope.CalendarEvents };
        string ApplicationName = "Client per quickstart";
        ServiceAccountCredential credential = GoogleCredential.FromFile(@"path\credentialjson.json").CreateScoped(Scopes).CreateWithUser(userName).UnderlyingCredential as ServiceAccountCredential;

        // Create Google Calendar API service.
        var service = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName
        });
        // THIS REQUEST FAILS!!  
        var y = service.CalendarList.List().Execute(); 

共有1个答案

束俊英
2023-03-14

您的问题是由于同时使用的作用域造成的,因为您正在设置CalendarService.Scope.CalendarEvents,所以这个作用域将优先于CalendarService.Scope.Calendar,因为Google API总是优先考虑最受限制的作用域(在本例中是CalendarEvents)。

正如您在CalendarList:list终结点作用域中所看到的,CalendarService.Scope.CalendarEvents不是一个作用域,您可以用来命中想要命中的终结点。

因此,在您的代码中,您可以删除额外的作用域,并将其保留如下:

string[] Scopes = { CalendarService.Scope.Calendar };
 类似资料:
  • 我正在创建一个帐户链接Alexa技能。我得到了链接授权码并将其交换为访问令牌。然后,我尝试将所有参数:代码、访问令牌、技能ID放入Alexa技能激活API。我总是得到一个信息:“无效的帐户链接凭据”。 要怎么做?

  • 因此,我正在尝试在我的本地主机上获取服务应用程序凭据,并且遇到了一些问题。我创建并下载了json密钥,我想保护它们,而不是让它们变成纯文本。 我想知道最好的方法。我有这个代码: 这里的问题是我的JSON文件在我的存储库中以纯文本形式公开。

  • 一些(但不是全部)Google帐户在尝试访问Google日历API时始终响应401,尽管Tokeninfo告诉我我正在使用的访问令牌具有适当的范围(请参阅下面的curl输出)。我可以使用刷新令牌成功获取新的访问令牌,但日历api继续到401。 有人知道为什么会发生这种情况吗?

  • 我正在赫洛库上部署一个使用谷歌OAuth2的应用程序。当我测试应用程序时,我转到身份验证网址(/auth/google),我看到以下错误消息(请注意,我将域名替换为***只是为了在此处发布: 错误:无效_client 未找到 OAuth 客户端。 请求详细信息response _ type = code redirect _ uri = https://* * * *。com/auth/Googl

  • 我收到了这个错误 已经跟踪了https://developers.google.com/admin-sdk/directory/v1/guides/delegation 我使用这个库,并在laravel 5.7:https://github.com/spatie/laravel-google-calendar上运行它 有什么办法可以解决这个问题。请帮忙。