如何在托管库中正确构建回调 URL 的状态令牌?

2023-12-11

我在使用 Google Apps 脚本时遇到问题状态代币从托管库调用时。这意味着一个The state token is invalid or has expired. Please try again.如果状态令牌是从子函数创建的,则始终会收到错误。

这是库中的一些示例代码(您可以使用项目密钥添加MP9K5nBAvEJwbLYG58qx_coq9hSqx7jwh)

var SCRIPT_ID = "1eC5VsM2vkJXa9slM40MTKTlfARGAGyK1myMCU3AB_-Ox_jGxQaoPM8P2";

// get a callback url to render in popup
function getAuthURL() {  
  var authorizeURL = getCallbackURL('testCallback');
  return authorizeURL;
}

// generate a user callback url
function getCallbackURL(callback) {
  var state = ScriptApp.newStateToken().withTimeout(3600).withMethod(callback).createToken();
  return 'https://script.google.com/macros/d/'+SCRIPT_ID+'/usercallback?state='+state;
}

// generate login popup
function showLogin(doctype){
  doctype.getUi().showDialog(
      HtmlService
          .createTemplate("<div><p><a href='<?=getAuthURL()?>' id='start-auth'><?=getAuthURL()?></a></p>" +
                          "<p><a href='<?=getAuthURLStored()?>' id='start-auth'><?=getAuthURLStored()?></a></p></div>")
          .evaluate()
          .setSandboxMode(HtmlService.SandboxMode.NATIVE)
          ); 
}

// dummy callback function
function testCallback(e){
  return HtmlService.createHtmlOutput('<b>Success. You can close this window. !</b>')
}

/*
  Rather than using dynamic state url storing the callback url and getting from property
  (you could set a script trigger to refresh this every 24 hours)
*/
function getAuthURLStored() {  
  var authorizeURL = getSetCallbackURL();
  return authorizeURL;
}

function setCallbackURL(){
  PropertiesService.getScriptProperties().setProperty('callbackURL', getCallbackURL('testCallback'))
}

function getSetCallbackURL(){
  return PropertiesService.getScriptProperties().getProperty('callbackURL')
}

它可以在 Google 文档中调用为(假设托管库标识符是 statetest.

function testFunction() {
  statetest.showLogin(DocumentApp);
}

When testFunction运行时,文档中的对话框会显示两个 url,第一个具有动态状态 url 无效,第二个具有存储状态令牌有效。

这是错误还是预期行为?


您当前尝试执行的操作不受支持。具体来说,在外部脚本中运行的库中创建状态令牌,但让回调直接进入库。从今天开始,回调必须始终针对外部脚本,然后可以根据需要委托回库。您可以在问题跟踪器上打开功能请求来支持您的用例,我们将进一步考虑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在托管库中正确构建回调 URL 的状态令牌? 的相关文章

  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • Crypto-Js 库的 hmac-256 脚本返回函数结构而不是 Google Apps 脚本中的值,在外部工作正常吗?

    我正在设置一个谷歌电子表格项目来连接到我的 CryptoExchange API 但是当涉及到这个简单的 CryptoJs Hmac sha256 脚本时 它不起作用 它返回函数结构而不是值 而在外部它工作正常 看我的jsfiddle ht
  • Google Apps 脚本 - 是否可以仅通过 Google Apps 脚本更改表格中的某些单元格?

    我在 Google SpreadSheet 中制作了一个目录 我的电子表格有一个表格 用户可以在其中添加信息 该表是通过从数据库表获取数据的脚本动态创建的 用户可以编辑表中的某些单元格 然后单击按钮将更改保存回数据库表中 我想限制他可以手动
  • 如何使用 Google Sheets (v4) API 修改依赖于特定单元格的特定数据行?

    我想找到一种使用 Google API 根据我提供的条件修改特定行数据的方法 类似于 SQL 的东西 UPDATE Customers SET ContactName Alfred Schmidt City Frankfurt WHERE
  • 使用 google.script.run 从 html 调用库函数

    我使用 Google App Script 实现库 并且使用 google script run 从库中调用函数时遇到一些困难 这是我的图书馆的代码 Code gs function ShowSideBar var html HtmlSer
  • 将数据从一张纸复制到另一张纸的APP脚本

    我尝试使用此脚本将数据从一张工作表复制到另一张工作表 但是当我更新源工作表中的数据并运行脚本时 整个数据都会被复制 我只想将更新的数据复制到目标工作表而不重叠 谁能建议该怎么做 function copyPaste var ss Sprea
  • 向文档添加动态页眉/页脚

    我想知道是否有一种方法可以向文档添加动态页眉或页脚 即在页脚中添加每个页面都不同的 页面标题 据我所知 编辑内置页眉或页脚将反映在每个页面上 我想知道是否有人想到了一种解决方法 通过访问页面上的第一行 最后一行并在那里插入文本来 强制 它
  • 联系人应用程序性能

    对谷歌脚本的 ContactsApp 进行一些测试并加载联系人 看起来运行 ContactsApp getContacts 加载所有联系人 所需的时间与运行 ContactsApp getContact email 特定联系人 所需的时间一
  • Google Apps 脚本触发器 - 每当将新文件添加到文件夹时运行

    我想在任何时候执行谷歌应用程序脚本new文件被添加到特定文件夹 目前 我使用的是每 x 分钟运行一次的时钟触发器 但我只需要在向文件夹添加文件时运行脚本 有没有办法做到这一点 与this https stackoverflow com qu
  • 有没有办法将 Google 文档分割成多个 PDF?

    我想在 Google Scripts VBA 代码中复制我为 Word 文档编写的代码 基本上 它通过搜索我插入文档中的标签 将文档 切片 为多个 PDF 文件 目的是允许合唱团使用 forScore 管理乐谱的应用程序 在切片点插入先前注
  • Google 文档有内容控制吗?

    我对 Google 文档和内容控制有疑问 如果有的话 我们有一个系统 允许用户设计带有内容控件 rtf 文本 组合框等 的 MS Word 文档 并为控件分配一个 ID 以便我们的系统可以提取 ID 并注册答案 然后数据被保存在数据库中 什
  • getActiveRange 不返回当前选择

    这应该是一个简单的问题 但我自己无法破解 我想将活动工作表中当前选定的单元格复制到名为 data 的数组中 var sheet SpreadsheetApp getActive getActiveSheet var selection sh
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • 使用 Google Apps 脚本从 Firebase 读取数据

    因此 正如标题所示 我目前正在解决一个相当麻烦的问题 这是场景 我有一个 Google 电子表格 其中包含一个包含姓名 电子邮件和到期日期的模板 但是 它不包含实际数据 数据本身位于 Firebase 中并且不断变化 那么 我的目标是让sc
  • 使用 Google App Script 从一个电子表格跳转到另一个电子表格

    我有一个脚本 仅当我位于运行代码的当前工作表中时才有效 在 A1 中 我有一个复选框 其作用是刷新 api 请求 因此 我下面的代码单击复选框并获取新数据 所以我的代码的目的基本上是单击 A1 中的复选框 但是 运行此代码只会激活复选框 但
  • 如何在表单提交时运行 Appscript?

    我正在尝试创建当用户完成表单提交时重定向到网络应用程序的 Google 表单 我查过谷歌开发者文档 https developers google com apps script guides triggers 但我看不到一种简单的方法来做
  • 通过脚本删除工作表

    我正在执行此代码 function deleteSheets var ss SpreadsheetApp getActiveSpreadsheet var sheets ss getSheets var transp ss getSheet
  • 我正在尝试将变量从 Google 脚本传递到 HtmlOutputFromFile

    我正在尝试创建一个带有下拉列表的输入框 其中该列表基于从电子表格中提取的二维数组 到目前为止 我的研究告诉我 如果我将 HtmlService createHtmlOutputFromFile 存储在一个变量中 我就可以 设置该变量的属性
  • 根据条件格式化货币

    Google Apps 脚本新手 但有一些 VBA 编码经验 我希望能够根据不同的单元格输入决定单元格的数字格式 eg Col A 客户名称 验证范围 B 栏 货币类型 英镑 美元 欧元 经过验证的列表 Col C 费用 100 用户免费类
  • 如何下载以前保存的 Google Apps 脚本修订版本?

    我仍在尝试从中恢复不知何故 丢失 了 Google Apps 脚本 https stackoverflow com questions 33697789 当我创建脚本的副本以将代码分叉到另一个项目时 我的想法是尝试通过驱动器 API 下载

随机推荐

  • 将数组合并为对象数组 JavaScript

    我这里有一个数组 var array firstName Nork lastName James age 22 position writer firstName James lastName Rodel age 25 position p
  • 优化此核心数据请求

    我在核心数据中有一个名为 MusicInterest 的实体 我必须一次添加 5000 个左右 我当前的流程是查询 MusicInterest 是否已存在 如果不存在则创建一个新的 看来这需要去商店 5000 次才能查看每个标题是否存在 当
  • 前瞻之前的惰性正则表达式:不适用于“.+?”

    我正在使用 VS 代码 我想选择所有匹配项italics前 term 不幸的是 VS code 还不支持lookbehind 所以我对第一个 图案 term 内容 Pivot Row term This is another term Pi
  • 带有 logback 的异步 DBAppender

    我正在开发一个使用 logback 进行日志记录的应用程序 我使用 logback DBAppender 将日志插入数据库 一切对我来说都很好 我能够将日志插入数据库并查看日志 我用 200 行日志代码进行了一些测试 并测量了这 200 条
  • 类型后跟 _t(下划线-t)代表什么?

    这似乎是一个简单的问题 但我无法通过 Stack Overflow 搜索或 Google 找到它 type 后跟 a 是什么意思 t意思是 例如 int t anInt 我在 C 代码中经常看到它与硬件密切相关 我不禁认为它们是相关的 正如
  • 查找两个数组之间的共同最小值

    我正在解决 Javascript 中的一个问题 寻找两个数组之间的共同最小值 然而 我被告知这可能不适用于某些值 有什么问题吗 function cmp a b return a b function findMinimum A B var
  • 在 DQL 中使用 SHA1 的任何方式

    下面的 DQL 会生成错误 Syntax Error line 0 col 42 Error Expected known function got sha1 有什么办法可以使用SHA1吗 public function findIdByD
  • 使用邻接表创建图

    include
  • C#:即使使用 httpclient 发送 CSRF 令牌后也会收到 403

    我正在尝试从我的 UWP 应用程序将有效负载发布到我们的后端系统 为此 我首先执行 GET 来获取 CSRF 令牌 然后将其添加到 POST 请求的标头中 发帖时 我仍然收到 403 Forbidden 错误 我正在与 Insomnia R
  • R:使 Ryacas 包在 Windows 上运行时遇到问题

    我正在尝试使用该包Ryacas in R 这是发生了什么 gt install packages Ryacas Please select a CRAN mirror for use in this session trying URL h
  • ASP.NET高效聊天应用方法

    我有与 SQL SERVER 2005 2008 连接的 ASP NET 4 Web 应用程序 我想为我的应用程序用户添加 聊天 功能 假设该功能将从头开始构建 最有效的合理方法是什么 Using WCF每 3 秒有一个 Javascrip
  • 手动更改 URL 时 React 路由不起作用 |反应路由器 4

    当通过 React router 的 Link 组件更改 URL 时 我的路由工作正常 但是 如果我尝试在浏览器中手动更改 URL 则会出现 404 错误 下面是routes js文件 import React from react imp
  • 如何在android中的按钮单击事件上删除项目后刷新列表视图?

    我想从Listview中删除一个项目 并在删除项目后刷新Listview 怎么可能 我正在使用 JSON 解析从数据库获取所有项目 并通过单击按钮删除选定的项目 从数据库中删除成功 但 Listview 无法一次刷新 怎么做 我正在使用 J
  • 有没有办法在fabric文件中进行滚动部署?

    给出以下 fabfile from fabric api import env run env user implicit user env hosts host1 explicit user host2 host3 def print u
  • 连接 SSIS 中多行的值

    我有一个文件源 其中数据如下所示 ID BarcodeNumber 1 123456789 1 33 2 987654321 2 44 我想获取数据如下 ID BarcodeNumber 1 12345678933 2 9876543214
  • Javascript 按值将数组传递给函数,保持原始数组不变

    我在这里阅读了许多与 按值 和 按引用 传递有关将数组发送到 JavaScript 函数的答案 然而 我在将数组发送到函数并保持原始数组不变时遇到问题 这个例子说明了这个问题 function myFunction someArray an
  • Django 在本地提供静态文件

    我已经有一段时间没有设置 django 在本地工作了 我用的是版本1 11 让它为静态文件提供服务 我的项目叫做chatsys我已经在这个文件夹中创建了 static 文件夹和 csschatsys static css style css
  • 在后面的 C# 代码中显示“是/否”警报框

    我正在尝试从 C 代码隐藏中显示 是 否 消息框 如果用户单击 是 我想调用 AddRecord 过程 如果用户单击 否 则不执行任何操作 理想情况下 我想使用下面的代码 但来自代码隐藏 OnClientClick return confi
  • NSData 到 Java 字符串

    我最近一直在编写一个与 iPhone 交互的 Web 应用程序 iPhone iphone实际上会以plist的形式向服务器发送信息 所以 类似的事情并不少见
  • 如何在托管库中正确构建回调 URL 的状态令牌?

    我在使用 Google Apps 脚本时遇到问题状态代币从托管库调用时 这意味着一个The state token is invalid or has expired Please try again 如果状态令牌是从子函数创建的 则始终会