我们正在使用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。
请帮我解决问题,以便关闭新窗口并获取所选文档的下载网址。
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);
}
由于
答案 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。