Я пытаюсь создать простой клиент для Lync с помощью Nodejs. Основание на http://ucwa.lync.com/documentation/KeyTasks-CreateApplication Я сделал подобное. Работает до последнего шага №9, когда я должен зарегистрировать свое приложение с помощью UCWA. Сервер отвечает с кодом 500 и глупым объяснениемUCWA Lync аутентификация - 500 веб-билет недействителен
Существует проблема с ресурсом, которого вы ищете, и он не может быть отображен
И заголовки
X-MS-диагностика «: '28032; источник = "MySource"; причина = "веб-билет недействителен."'
var http = require('request-promise');
var lync = {};
lync.setup = function(email, password){
var self = this;
var hostname = email.split('@');
this.username = email;
//discover urls
return http.get('http://lyncdiscover.'+hostname[1])
.then(function(d) {
var parsed = JSON.parse(d);
self.urls = {
self: parsed._links.self.href,
user: parsed._links.user.href,
xframe: parsed._links.xframe.href
};
return http.get(self.urls.user);
}).catch(function(err){
if(err.statusCode == 401){
var toParse = err.response.headers['www-authenticate'];
var Oauth = toParse.match(/https:\/\/[\d\w\./_-]*/i)[0];
var loginPost = {
grant_type: 'password',
username: email,
password: password
};
return http.post(Oauth, {form:loginPost});
}
return false
}).then(function(data){
var parsed = JSON.parse(data);
//setup authorization
http = http.defaults({
headers: {Authorization: parsed.token_type + ' ' + parsed.access_token}
});
//console.log(self.urls.user);
//console.log('Authorization:'+ parsed.token_type + ' ' + parsed.access_token);
return http.get(self.urls.user);
}).then(function(data){
var parsed = JSON.parse(data);
self.urls.applications = parsed._links.applications.href;
var registerApp = {
culture : "en-us",
endpointId : "2d9dc28d-4673-4035-825c-feb64be28e4e",
userAgent : "Test"
};
var r = "{'userAgent': 'NodeJs', 'endpointId' : '2d9dc28d-4673-4035-825c-feb64be28e4e', 'culture': 'en-US'}";
return http.post(self.urls.applications, {body: registerApp, json:true});
})
.then(function(data){
console.log(data);
})
.catch(function(err){
console.log(err);
return false;
});
};
//run app
lync.setup('[email protected]', 'password').then(function(ret){
});
Один ключевой пункт здесь. Это не мой сервер. У меня просто есть учетная запись, и я могу войти в систему с официальным клиентом Lync или плагином Pidgin. Есть ли дополнительные шаги, чтобы «разрешить» моему приложению работать с UCWA?
@ShelbyZ Я могу легко авторизовать использование Oauth. Я получаю разрешение на маркер, так что я вошел в
Я получаю JSON, похожий на
"_links":. { "Я": { "HREF": "ссылка"}, "приложения": { "HREF": "Мне это нужно"}, "Xframe": { "HREF": "ссылка"}}}
Сейчас. Мне нужно «зарегистрировать свое приложение», выполняя POST. На этом последнем шаге я получаю ответ на 500 кодов. Я надеюсь, что это не связано с этим @Matthew Проктор сказал .. becouse я не могу просто администрировать сервер
Зная, что содержится в JSON ответ на запрос GET на /Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=domain.com и если домен часть URL соответствие ответа поможет определить, перенаправляется ли вы на другой пул Lync, где этот оригинальный токен OAuth будет недействительным. Исходя из вашей текущей информации, которая является направлением, которое имеет наибольший смысл, но есть недостаток контекста (сетевой трафик, ведущий к точке, где вы видите ответ 500). – ShelbyZ