【问题标题】:How can I obtain an OAuth refresh token for a G Suite Add-on running on Apps Script?如何为在 Apps 脚本上运行的 G Suite 插件获取 OAuth 刷新令牌?
【发布时间】:2020-10-12 09:16:07
【问题描述】:

考虑到获取用户同意的授权流程是由 Apps 脚本处理的,有谁知道如何获取 G Suite 插件的刷新令牌?

我知道如何通过方法获取访问令牌

ScriptApp.getOAuthToken()

但我不知道如何获取特定用户的刷新令牌

上下文:

我有一个插件可以让用户安排定期会议。用户在从 G Suite Marketplace 安装插件时授予应用对其日历的访问权限,因此我可以在他们运行脚本时在他们的日历上读写。

我想在会议前一天向他们发送电子邮件提醒,因此我想在他们不运行脚本时使用云功能在后台阅读他们的日历。

为了做到这一点,我需要该用户的刷新令牌,因为访问令牌已过期。

我真的坚持了很多天了。任何帮助将不胜感激!

非常感谢。

【问题讨论】:

    标签: google-apps-script google-oauth gsuite-addons


    【解决方案1】:

    您有两种选择:

    如果您将访问权限设置为offline (.setParam('access_type', 'offline')),只要用户授予您一次权限就足够了。

    【讨论】:

    • 谢谢ziganotschka!我能够使用您建议的第一个选项获得刷新令牌,但我认为它不能解决我的问题。为了获得 CODE var,我仍然需要让用户访问一个 URL 并再次授权我的脚本。如果我理解正确,我没有利用用户最初安装插件时获得的同意。还是我错过了什么?我将使用 oauth2 库,感谢您的指点!
    • 阅读here 了解离线访问。
    • 我想我现在更好地理解了这个问题。当用户安装我的插件时,初始授权由后台的应用程序脚本管理。我无权访问执行此授权的 OAuth 客户端的客户端密码,也无权访问授权服务器返回的访问代码。客户端 ID 作为自动生成的“Apps Script”客户端 ID 显示在开发者控制台上,没有访问密钥的选项。我的解决方案是创建一个新的客户端 ID 并再次请求用户权限。我使用您建议的库做到了,再次感谢!
    猜你喜欢
    • 2019-05-02
    • 2020-11-30
    • 2012-04-18
    • 2021-01-18
    • 2015-01-10
    • 2018-08-07
    • 2021-11-14
    • 2021-03-26
    • 2013-09-05
    相关资源
    最近更新 更多