如何通过OAuth2在GAS中使用多个帐户?

问题描述 投票:1回答:1

我遵循了GAS OAuth2 library example。但我想实现以下目标。

  1. 带有参数userID的通过Https获取/发布请求(authorizationUrldoGet())向GAS提出的doPost()的UserA请求
  2. GAS返回authorizationUrl,并使用UserA的userID将其state变量保存在Google表格中>
  3. UserA使用该授权[GAS检查state函数中的authCallback()变量,并使用Google工作表中旧存储的authCallback()变量进行验证。如果相同,则将UserA的
  4. 访问令牌
  5. 与userID存储在同一Google工作表中这样的东西

state

    现在,UserA可以使用Https请求修改其驱动器,以保存的
  1. 访问令牌
的GAS和GAS控件UserA的驱动器UserB授权URL请求
  • GAS还将授权URL返回给UserB,他也可以访问GAS。
  • GAS还将UserB的访问令牌保存为其用户ID。
  • 现在GAS可以使用用户ID和已保存的
  • 访问令牌。
  • 控制UserA和UserB的驱动器。有可能吗?我知道访问令牌会在一段时间后过期。请帮助我完成我的爱好项目

    我遵循了GAS OAuth2库示例。但我想实现以下目标。 UserA通过参数为userID的Https获取/发布请求(doGet()或doPost())向GAS请求的AuthorizationUrl ...

    您可以使用function authCallback(request) { var service = getService(); var authorized = service.handleCallback(request); var state = request.parameter.state; if (authorized) { if(state == getOldState(userID)){ storeToken(userID, service.getAccessToken()); } return HtmlService.createHtmlOutput('<h1>Success!</h1>'); } else { return HtmlService.createHtmlOutput('Denied.'); } } 类。

    示例:

    在脚本的PropertiesService中保存访问令牌,并将令牌刷新到用户特定的属性中。

    脚本将能够使用相同的doPost()来获取这些属性。

    进一步阅读:

    google-apps-script oauth-2.0 google-api google-drive-api
    1个回答
    0
    投票
    您可以使用function authCallback(request) { var service = getService(); var authorized = service.handleCallback(request); var state = request.parameter.state; if (authorized) { if(state == getOldState(userID)){ storeToken(userID, service.getAccessToken()); } return HtmlService.createHtmlOutput('<h1>Success!</h1>'); } else { return HtmlService.createHtmlOutput('Denied.'); } } 类。
    © www.soinside.com 2019 - 2024. All rights reserved.