我试图访问谷歌表使用云函数和表API在python,但得到一个403权限错误。我创建了一个服务号,导出了密钥(包含在我正在上传的云函数zip中),并为该服务号提供了访问工作表所需的API范围(我尝试了https://www.googleapis.com/auth/spreadsheets和https://www.googleapis.com/auth/drive)。下面是代码:
import httplib2
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
def main(request):
scope = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secrets.json', scope)
service = build('sheets', 'v4', http=credentials.authorize(httplib2.Http()))
spreadsheet_id = 'id-of-the-google-sheet'
range = 'Sheet1!A:D'
response = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range).execute()
cols = response.get('values', [])[0]
return cols[0]
requirements.txt:
google-api-python-client
oauth2client
google-auth-httplib2
google-auth
如果我显式地与服务号共享Google工作表,则身份验证有效,并且我可以访问工作表数据。问题是,为什么这不能通过应用适当的API范围作为谷歌帐户管理员来工作?
Google Drive权限位于范围之上。请求的身份验证需要范围,但是驱动器权限(以及扩展表)决定了谁有权访问哪个文件。如果调用帐户(在这种情况下是服务帐户)不能访问有问题的工作表,您将获得403。
在管理控制台中设置作用域与权限没有直接关联。
还有一点需要注意的是,如果您在默认情况下将文档共享给谷歌办公套件帐户中的每个人,您可以使用域宽委托(1)并使用服务帐户在谷歌办公套件域中模拟用户(如超级管理员)。您不需要将每个文档与服务帐户本身共享。
(1) 这篇文章是针对AdminSDK的,但这篇文章包含了最好的示例。您对那里的凭证对象感兴趣。您还可以使用一个属性创建对象。json IIRC。
通过使用以下curl命令,我能够访问令牌并获得以下响应curl用户名:password@machinename:11002/appName/oauth/token-d grant\u type=password-d username=loginFormUserID-d password=loginFormUserPassword 响应:{“实体\ id”:9,“实体\类型”:“刷新\标记”:“ey
我是Apache Shiro的初学者。我一直在跟踪文档和许多其他教程,博客等,但我就是无法使身份验证工作。当我尝试使用有效的用户名和密码登录时,总是会引发。我正在使用DynamoDB作为存储用户凭据的自定义领域,但我真的不认为这有什么关系。显然,我存储和/或执行凭据匹配的方式是不正确的。以下是我的设置:
本文向大家介绍C#验证身份证的函数,包括了C#验证身份证的函数的使用技巧和注意事项,需要的朋友参考一下 这段C#代码主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证 更为复杂些的验证方法: 方法三: 以上所述就是本文的全部内容了,希望大家能够喜欢。
问题内容: 我试图让我的自定义Java应用程序使用我们的Active Directory服务器进行身份验证,但由于某种原因我无法使其正常工作。谁能看到为什么呢?这是我的方法如下: 结果: 问题答案: 你尝试过这种方式吗? 也更换 与
我正在开发一个Web应用程序 然而,我在尝试允许用户通过注册链接注册时遇到了一个问题。如果用户未经身份验证,则无法访问注册表的链接(“showRegistrationForm”) 有人能洞察为什么会发生这种情况吗?我在下面包含了我的安全配置中的代码片段