gpt4 book ai didi

javascript - Lync UCWA - 创建应用程序给出了 HTTP 409 : Conflict error

转载 作者:行者123 更新时间:2023-11-29 19:33:40 28 4
gpt4 key购买 nike

过去几天,我一直在尝试使用 Microsoft 的 UCWA API(一种 REST API)为我们的 Lync 服务开发一个应用程序。要使应用程序正常运行:我首先必须使用对特定 URL 的 POST 请求将其提交给 API。首先,我必须向服务器进行身份验证,我通过向 API 发布用户名和密码凭据来完成此操作。然后我得到一个访问 token ,我可以通过将 token 发布到每个请求的 header 中来使用它向 API 发出进一步的请求。我已经能够使访问 token 正常工作,但是当我尝试通过向 https://lyncextws.company.com/ucwa/oauth/v1/applications 发布 HTTP 请求来注册应用程序时: 事情会开始出错。

所有这一切都是通过一个 JavaScript 文件与 iframe 一起绕过同源策略来完成的。

这是我的代码目前的样子:

<!DOCTYPE html>
<html lang="no">
<head>
<meta charset="UTF-8" />
<title>PresInfoDisp</title>
</head>
<body>
<iframe src="https://lyncextws.company.com/Autodiscover/XFrame/XFrame.html" id="xFrame" style="display: none;"></iframe>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">

var access_token;

var stage = 0;

// CONNECT AND AUTHENTICATE WITH LYNC UCWA SERVICE
function connectAndAuthenticate() {

stage = 1;

var request = {
accepts: 'application/json',
type: 'POST',
url: 'https://lyncextws.company.com/WebTicket/oauthtoken',
data: 'grant_type=password&username=alexander@domain.company.com&password=somePassword'
};
document.getElementById('xFrame').contentWindow.postMessage(JSON.stringify(request), 'https://lyncextws.company.com/WebTicket/oauthtoken');
}

// REQUEST A USER RESOURCE
function getUserResourceAuthRequest() {

stage = 0;

var request = {
accepts: 'application/json',
type: 'GET',
url: 'https://lyncextws.company.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=company.com'
};
document.getElementById('xFrame').contentWindow.postMessage(JSON.stringify(request), 'https://lyncextws.company.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=company.com');

}

function getUserResource() {

stage = 2;

var request = {
accepts: 'application/json',
type: 'GET',
url: 'https://lyncextws.company.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=company.com',
headers: {Authorization: "Bearer "+access_token}
};
document.getElementById('xFrame').contentWindow.postMessage(JSON.stringify(request), 'https://lyncextws.company.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=company.com');

}

// REGISTER APPLICATION RESOURCE
function registerApplication() {

stage = 3;

var request = {
accepts: 'application/json',
type: 'POST',
url: 'https://lyncextws.company.com/ucwa/oauth/v1/applications',
headers: {Authorization: "Bearer "+access_token},
data: {'userAgent': 'InfoDisp1', 'endpointId' : '2d9dc28d-4673-4035-825c-feb64be28e4e', 'culture': 'en-US'}
};
document.getElementById('xFrame').contentWindow.postMessage(JSON.stringify(request), 'https://lyncextws.company.com/ucwa/oauth/v1/applications');

}

// GRAB A LIST OF CONTACTS
function listContacts() {

stage = 4;

var request = {
accepts: 'application/json',
type: 'GET',
url: 'https://lyncextws.company.com/ucwa/oauth/v1/applications',
headers: {Authorization: "Bearer "+access_token}
};
document.getElementById('xFrame').contentWindow.postMessage(JSON.stringify(request), 'https://lyncextws.company.com/ucwa/v1/applications');

}

this.receiveMessage = function(message) {

switch(stage) {
case 1:

var beforeReplace = message.data.replace("/\\/g", "");
var json = jQuery.parseJSON(beforeReplace);
var json2 = jQuery.parseJSON(json.responseText);
access_token = json2.access_token;
console.log(json2.access_token);
console.log(message);

getUserResource();

break;
case 0:
console.log(message);

connectAndAuthenticate();

break;

case 2:

var beforeReplace = message.data.replace("/\\/g", "");
var json = jQuery.parseJSON(beforeReplace);
var json2 = jQuery.parseJSON(json.responseText);
console.log(json2._links.applications.href);

window.setTimeout(function(){registerApplication()}, 5000);

break;
case 3:

console.log(message);

break;
case 4:



break;
}


};
window.addEventListener('message', this.receiveMessage, false);


$(window).load(function() {
getUserResourceAuthRequest();
//console.log(access_token);
});

</script>
</body>
</html>

当我运行此代码时:最后一个 ajax 查询返回错误 409:冲突,而它应该返回 201:已创建

这是我的浏览器 (Google Chrome) 的输出: What my browser outputs in the developer console in Google Chrome

401: Unauthorized error 应该会发生,但是 409 Conflict,不应该发生。所以这是我的问题:谁能发现为什么我收到这个 409 错误而不是我应该收到的 201?

Microsoft 的示例代码似乎工作正常,但我想避免使用它,因为我需要很长时间才能熟悉它。

如果缺少数据,您需要发现问题:请在评论中告诉我,我会提供!

最佳答案

如果你更换

data: {'userAgent': 'InfoDisp1',  'endpointId' : '2d9dc28d-4673-4035-825c-feb64be28e4e', 'culture': 'en-US'} 

用该数据的字符串代替 I.E.

data: "{'userAgent': 'InfoDisp1',  'endpointId' : '2d9dc28d-4673-4035-825c-feb64be28e4e', 'culture': 'en-US'}" 

似乎数据需要一个字符串,在您的示例中,您传递给它的是一个 JSON 对象。这样做使您的示例对我有用。

关于javascript - Lync UCWA - 创建应用程序给出了 HTTP 409 : Conflict error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26174152/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com