【问题标题】:Issue with Visual Studio Online OAuth unable to get access tokenVisual Studio Online OAuth 无法获取访问令牌的问题
【发布时间】:2014-07-01 21:41:17
【问题描述】:

我正在尝试查询 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":"无效的客户端身份验证令牌。"}

我确定我在这里遗漏了一些简单的东西。我尝试了多种组合,但似乎没有任何帮助。

【问题讨论】:

    标签: javascript visual-studio oauth


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-02
      • 1970-01-01
      • 2016-07-18
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 2012-12-10
      相关资源
      最近更新 更多