1

我有一个自定义按钮,用于查询并可能更新 Quickbase 中的管理应用程序,当前用户不需要访问该应用程序。

我有 JS 代码在用户单击按钮时执行以检查管理应用程序等...

我检查应用程序的 API 调用具有适当的 apptoken 和 usertoken。但是,浏览器仍然缓存了当前用户的会话,因此 API 调用错误并显示拒绝访问错误消息。

我正在寻找一种方法来制作隐藏的隐身窗口,然后执行此代码,或者一种有问题地强制用户令牌取代当前用户访问/权限的方法。

我已经看到 chrome 扩展可以在哪里使用 chrome.windows.create... 但我没有扩展经验,理想情况下,我不想只为这个功能提供扩展,并且可能必须安装它在每个用户的 PC 上运行...

这是我当前代码的片段...如果有人对管理应用程序具有权限,则此代码确实有效...但此代码驻留在不同的应用程序中:

    PreProcURL = "https://<domain>.quickbase.com/db/<dbid>?a=API_DoQuery&apptoken=<>&usertoken=<>&query={'3'.EX.'1'}";
    PreProcQuery.open('GET', PreProcURL, 'async');
    PreProcQuery.send();
    PreProcQuery.onload = function(){
        console.log(PreProcQuery.responseXML);
        RunBit = (PreProcQuery.responseXML.documentElement.getElementsByTagName("runbit"))[0].innerHTML;
        SupportData = (PreProcQuery.responseXML.documentElement.getElementsByTagName("supportdata"))[0].innerHTML;
    if(RunBit != "1"){
        $.get("https://<domain>.quickbase.com/db/<dbid>?a=API_EditRecord&rid=1&_fid_6=1&_fid_7="+rid+"&apptoken=<>&usertoken=<>");
    }else{
        if(SupportData == rid){
            alert("This PreProc File is already in progress... please wait.");
        }else{
            alert("Another PreProc is already in progress... please wait.");
        }
    }        
    };

在此先感谢您提供任何帮助。

4

1 回答 1

0

在 quickbase.com 中托管的 JavaScript 中执行的 API 调用(按钮、页面等)将以触发脚本的登录用户身份运行。用户令牌被忽略。

完成您所追求的最常见的方法是在服务器端位置编写 API_DoQuery 代码,然后从您的 JS 代码中触发它。

于 2019-05-09T12:12:53.560 回答