当我的应用程序包含查询字符串

时间:2016-04-28 11:35:53

标签: javascript onedrive

我们正在使用grails来开发我们的Job门户应用程序。一旦用户申请任何特定工作并从onedrive上传文档,我们就要求从onedrive下载文档。每个作业的网址都不同(http://localhost:8080/apply?jobId=1137。这里"应用"是一个动作)我们需要加载onedrive。我将js代码放在外部脚本文件中并包含在apply.gsp和我的redirecturl中作为" http://localhost:8080/apply"在onedrive配置中。一旦我点击Ondrive选项,它就会在新窗口中打开登录页面,我可以选择该文件。一旦我点击"打开"按钮,请求正在按下" apply"控制器中的操作并在新窗口中获取异常(因为jobid缺少新请求而获得异常)。我们无法获取下载URL,因为响应未返回到同一页面。我们正在使用OneDrive v5 SDK。

请帮我解决问题,以便关闭新窗口并获取所选文档的下载网址。

js file

function launchOneDrivePicker(){

    var pickerOptions = { 

          success: function(files) {

            // Handle returned file object(s)

            var filObj = files.values[0];
            var fileName = filObj.fileName
            var fileLink = filObj.link
            var fileSize = filObj.size

            alert("File Name : " + fileName + "  **  fileLink : "+ fileLink +"  **  fileSize : "+fileSize);
          },

          cancel: function() {
              // handle when the user cancels picking a file
          },

          linkType: "webViewLink", // or "downloadLink",
          multiSelect: false // or true
    };
    OneDrive.open(pickerOptions);
  }

由于

1 个答案:

答案 0 :(得分:1)

查看文档页面中的“使用自定义重定向URI”部分: https://dev.onedrive.com/sdk/js-v7/js-picker-open.htm

用来解释:

创建一个仅包含OneDrive脚本的新单独页面:

<html>
<script type="text/javascript" src="https://js.live.net/v7.0/OneDrive.js">
</script>
</html>

在请求的高级部分中引用新页面作为重定向URL

var odOptions = {
  clientId: "INSERT-APP-ID-HERE",
  action: "download",
  openInNewWindow: true,
  advanced: {
    redirectUri: "https://contoso.com/filePickerRedirect.htm" <-- new separate page
  },
  success: function(files) { /* success handler */ },
  cancel: function() { /* cancel handler */ },
  error: function(e) { /* error handler */ }
}

请记住将新页面添加为应用程序的授权重定向URL。