我很难找到问题,因为两天之后我都不知道为什么我现在得到这个错误,即使该应用程序在一个月前完全正常运行。
在Web应用程序完成的任务中,它会进行Admin SDK API调用以获取组成员列表。该应用的范围为https://www.googleapis.com/auth/admin.directory.group.readonly
,但我收到403错误"未授权访问此资源/ api" (我确认在Google的控制台中启用了Admin SDK API)。
顺便说一下,应用程序在向Google Classroom API发出请求之前没有问题。
这里最令人难以置信的是,应用程序机密由管理员帐户生成。当我使用相同的管理员帐户登录应用程序时,我收到此错误。但是,当我使用文档(https://developers.google.com/admin-sdk/directory/v1/reference/members/list#response)进行测试时,我得到200响应而没有完全相同的授权范围的问题。
使用此管理员帐户获取成员列表时没有遇到任何问题。从那时起,据我所知,源代码或配置方面没有任何变化。所以我认为问题可能在某种程度上与客户机密有关,但我不知道如何。
此网络应用仅供此管理员帐户使用
在我对StackOverflow的研究中,我发现大多数事情都在谈论" Google Apps域范围的授权和#34; (https://developers.google.com/admin-sdk/directory/v1/guides/delegation),但我之前从未使用过它。我想避免这种情况。
你知道为什么我在网络应用程序中出现这个403错误,即使它只是在文档中测试请求并且我使用超级管理员帐户时有效吗?
编辑:我现在已经测试了一个简单的代码片段,其中包含" Google Apps域范围的权限授权"基于这个要点https://gist.github.com/MeLight/1f4517560a9761317d13ebb2cdc670d3和单独的片段工作。 但是,在我的应用程序中使用它时,我仍然会收到403错误。我疯了,可能是许可问题?
答案 0 :(得分:1)
最后,在我的头靠在墙上之后,我发现了问题所在:
用于获取组groupKey
成员的https://www.googleapis.com/admin/directory/v1/groups/groupKey/members
有一个尾随空格。
是的,就是这样。我只需要删除代码中的字符串(Python中的一行),一切顺利。
我所做的一切,搜索权限/客户端ID /权限授权似乎都是疯了。
严重的是,谷歌API的403未经授权访问此资源/ api可能更明确。