我正在创建一个Google项目,它将每5分钟自动触发一个函数来分析Google表。
OAuth授权
待分析的表格是G套件单,只对公司成员公开.所以我需要OAuth2授权访问。我该怎么做?
我想我需要一个服务帐户客户端ID,因为这将在服务器中自动运行,所以不可能有OAuth2流,对吗?如果函数在服务器中运行,谁将单击该按钮?
我需要一些方向。
谢谢
https://developers.google.com/identity/protocols/OAuth2ServiceAccount
发布于 2017-02-16 04:08:29
最后,我用这种方式解决了这个问题:
然后在main()中:
sheetService = discovery.build('sheets', 'v4', http=authorized_http)
logging.info("Reading Google Sheet")
result = sheetService.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute(http=authorized_http)
urlfetch.set_default_fetch_deadline(45)
logging.info("Printing in Google Sheet")
sheetService.spreadsheets().values().append(spreadsheetId=spreadsheet_id, range="Log", body=body, valueInputOption="USER_ENTERED").execute(http=authorized_http)其中authorized_http参数是在credentials.authorize()之前构建的
不过,我认为这是可以改善的。
发布于 2017-02-15 20:54:58
是的,它是一个OAuth2流,但不涉及手动用户操作--这些操作由服务器根据预先配置的信息自动执行。从你提到的文件来看:
GoogleWeb2.0系统支持服务器与服务器之间的交互,例如OAuth应用程序和Google之间的交互。对于此场景,您需要一个服务帐户,它是属于应用程序的帐户,而不是属于单个最终用户的帐户。您的应用程序代表服务帐户调用Google,因此用户不会直接参与其中。这个场景有时被称为“两条腿的OAuth”或“2LO”。(相关术语“三条腿的OAuth”指的是应用程序代表最终用户调用Google的场景,有时需要用户的同意。)
基本上你需要:
若要将域范围的权限委托给服务帐户,请首先在“服务帐户”页面中为现有服务帐户启用域范围内的委托,或在启用域范围委托的情况下创建新的服务帐户。 然后,G套件域的管理员必须完成以下步骤:
您的应用程序现在有权作为您域中的用户进行API调用(以“模拟”用户身份)。准备进行授权API调用时,可以指定要模拟的用户。
https://stackoverflow.com/questions/42182137
复制相似问题