Visual Studio Online OAuth的问题无法获取访问令牌

时间:2014-06-12 02:45:18

标签: javascript visual-studio oauth

我正在尝试查询Visual Studio Online的REST API,并希望通过OAuth授权我的用户,如msdn article所述:

  

Visual Studio Online使用Oauth 2.0协议为用户授权您的应用并生成访问令牌。从应用程序调用REST API时使用此标记。

我正在使用JavaScript来尝试实现此目的(为了简洁而省略onload函数,并且code / clientSecret似乎设置为正确的值):

var xhr = new XMLHttpRequest();
var params =  'client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer' +
'&client_assertion={' + clientSecret + '}' +
'&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer' +
'&assertion={' + code +'}' +
'&redirect_uri=' + encodeURIComponent(redirectUri);
xhr.open('POST','https://app.vssps.visualstudio.com/oauth2/token');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Accept', 'application/json');
xhr.onload = //onloadfunction
xhr.send(params);

然而,我一直得到以下回应:

  

POST https://app.vssps.visualstudio.com/oauth2/token 400(错误请求)   {“Error”:“invalid_client”,“ErrorDescription”:“无效的客户端身份验证令牌。”}

我确信我在这里缺少一些简单的东西。我尝试了各种组合,但似乎没有任何帮助。

1 个答案:

答案 0 :(得分:3)

删除客户端断言和断言值周围的花括号{}。

此外,一般情况下,您不应该使用这种形式的OAuth来在基于JavaScript的应用中授权用户(因为您无法保护应用的客户端密码)。