【问题标题】:Google Drive Share Dialog in Google Apps ScriptGoogle Apps 脚本中的 Google Drive Share 对话框
【发布时间】:2016-05-26 23:15:31
【问题描述】:

我在 Apps 脚本应用程序中使用 Google Drive 共享对话框。该应用程序部署为 Web 应用程序,并通过 doGet() 方法进行访问。该应用程序包含一个使用 Google Drive 共享对话框共享 Drive 文件的按钮。

当 doGet() 请求中缺少参数值时,Google Drive 共享对话框将按预期工作。但是,当将文件 ID 作为参数传递给 doGet() 方法并单击共享按钮时,Google 云端硬盘共享对话框返回错误:
Origin 'https://xxxxxxxx-script.googleusercontent.com' is not allowed for application ID " XXXXXXXXXX”。
我正在使用 HTML 服务来评估参数值并将字符串数组返回到 HTML 模板。我可以看到文件 ID 包含在对驱动器共享对话框功能的请求中。为什么在没有参数值的情况下它会按预期工作,但在评估参数值时会抛出 Origin not allowed 错误?我什至尝试将原始 URL 添加到开发人员控制台中受信任的 java 脚本原始列表中,但仍然收到相同的错误。

我正在尝试使用 Google Drive UI 集成将文件 ID 从 Drive 传递到我的 Apps Script Web 应用程序。 shareResult() 函数在加载驱动器共享库后通过客户端 javascript 调用。

function doGet(e){
    var html = HtmlService.createTemplateFromFile('htmlfile');
    var ids = e.parameters.ids;
    html.folderIds = ids;
    return html.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function shareResult(){
   var idList = folderIds.split(",");
   s = new gapi.drive.share.ShareClient(PROJECT_ID);
   s.setOAuthToken(oauthtoken);
   s.setItemIds(idList);
   s.showSettingsDialog();
}

【问题讨论】:

    标签: javascript google-apps-script google-drive-api


    【解决方案1】:

    您确定“oauthtoken”确实已设置吗?你应该调试它。我敢打赌'oauthtoken'实际上是空的或不正确的。您也不应该使用 PROJECT_ID 实例化 ShareClient。试试这个:

    var idList = folderIds.split(",");
    s = new gapi.drive.share.ShareClient();
    s.setOAuthToken(ScriptApp.getOAuthToken());
    s.setItemIds(idList);
    s.showSettingsDialog();
    

    【讨论】:

    • 是的,我已验证 OAuth 令牌有效。当我在没有 PROJECT_ID 的情况下实例化 ShareClient 时,对话框会显示加载图像一段时间,然后返回 500 错误。当我在 idList 中硬编码文件 ID 时,此代码有效。唯一不起作用的是通过 doGet() 评估参数并将它们传递给客户端 js。
    【解决方案2】:

    doGet(e)doPost(e) 中的 e 参数是事件参数的对象表示,其中包含有关任何 URL 参数的信息。有关参数的更多信息,请参阅文档的URL Parameters 部分。

    您必须找到一种方法来获取e 对象(很可能位于e.parameters 对象中)上的fileId。完成后,基于 Drive API 的 Add the dialog script,您必须将其放入一个数组并在创建 ShareClient 时传递它。

    【讨论】:

    • 我已经用我用来传递参数和触发 ShareClient 对话框的代码 sn-ps 更新了我的问题。在调试代码时,我可以在 shareResult 函数中看到来自 e.parameters.ids 的文件 ID。
    • 可能字段拆分后需要修剪?即,可能在 id 上带有前缀/后缀的空格字符,使其无效。
    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多