UCWA Lync身份validation – 500个Web门票无效

我正在尝试使用Nodejs为Lync创build一个简单的客户端。 基于http://ucwa.lync.com/documentation/KeyTasks-CreateApplication我做了这样的东西。 它的工作,直到最后一步#9时,我应该注册我的应用与UCWA。 服务器响应代码500和愚蠢的解释

您正在查找的资源存在问题,无法显示

和标题

x-ms-diagnostics“:”28032; source =“mysource”; reason =“网票无效”

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('login@domain.com', 'password').then(function(ret){ }); 

这里的一个关键点。 这不是我的服务器。 我只是有一个帐户,我可以login官方的Lync客户端或Pidgin插件。 是否有一些额外的步骤来“允许”我的应用程序与UCWA?

@ShelbyZ我可以轻松授权使用Oauth。 我正在收到授权令牌,因此我已login。

我正在接收类似于json的消息

“_links”:{“self”:{“href”:“link”},“applications”:{“href”:“我需要这个”},“xframe”:{“href”:“link”}}}

现在。 我需要“注册我的应用程序”做POST。 在这最后一步我得到500代码响应。 我希望这是不相关的@马修·普罗克托说..因为我不能简单地pipe理服务器

谢谢@ShelbyZ你是对的,这是分裂域的情况。 现在授权的作品,我可以注册我的应用程序。 也是后代的例子

 var http = require('request-promise'); var lync = {}; lync._authorize = function(){ var self = this; var orgDomain = self.urls.user.match(/https:\/\/([\w\d\.]+)/i)[0]; //console.log(orgDomain); 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: self.username, password: self.password }; return http.post(Oauth, {form:loginPost}); } }).then(function(data){ if(data) { var parsed = JSON.parse(data); //setup authorization http = http.defaults({ headers: {Authorization: parsed.token_type + ' ' + parsed.access_token} }); return http.get(self.urls.user); } }).then(function(data){ //check for split-domain scenario var parsed = JSON.parse(data); var domain = parsed._links.self.href.match(/https:\/\/([\w\d\.]+)/i)[0]; console.log('[1] '+orgDomain); console.log('[2] '+domain); if(domain!== orgDomain){ //split domain scenario self.urls.user = self.urls.user.replace(orgDomain, domain); http = http.defaults({ headers: {Authorization: null} }); self._authorize(); } else { //create app var parsed = JSON.parse(data); self.urls.applications = parsed._links.applications.href; var registerApp = { culture : "en-us", endpointId : "2d9dc28d-4673-4035-825c-feb64be28e4e", userAgent : "NodeJs client" }; return http.post(self.urls.applications, {body: registerApp, json:true}); } }).then(function(app){ console.log(app); }); }; lync.setup = function(email, password){ var self = this; var hostname = email.split('@'); this.username = email; this.password = password; //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 self._authorize(); }); }; //run app lync.setup('username@domain.com', 'password'); 

在将我的testing域添加到“允许的域”列表之前,我遇到了同样的错误。

这可以通过PowerShell进行更新,详情如下:

启用UCWA并configuration允许的域

从http:// localhost /运行我的代码时,我有客户端看到类似的错误,他们的修复是testing他们的代码在FQDN(即http://testmyucwacode.mydomain.com/ )。

Interesting Posts