在使用授权令牌在OAuth2中获取访问令牌时,为什么必须指定重定向URI?

时间:2019-03-25 09:48:22

标签: oauth-2.0

此代码有效

我通过浏览https://app.stex.com/oauth/authorize?response_type=code&client_id=144&scope=trade个人资料来获得代码,然后得到了代码。

我将代码放在程序中

  Dim code = "def50200354606432acfb60c836ac40ff440dc2755164756cd7e34ddcf9cd4db8df87cabe71bf5e5c5c278c18c81b0415ba47da34f83ddaab0a84696e1722e266aec2e7942ed86e40e65b0dcf7428aad2747920de6cf8585ce281214f2ecc7353e807640320ca263013387ea0b2d466e2cc31b46c2a2e7b1dd33cdc518efa20b76b752734174f2b500450ed1ccb434611b0bdc458fcfed69a2ab2a5f91242f1f68c504d3151048c49eaf976eff6bbb922dac1acbba069fc8b57fd74069eeadf24c067edf4563aa5ad14b0d9740f1518723ba1c5637164e5e3c4d408102f49c0f63d8f3f5dfbfe11132d242a182e4af3449e811292d1ac69aadf74608a5383b9c4030de3579c98b07c4f087752f7e404f4897d8167b3d8ad266bdb42f74b539cc3fef6ce774edd35d305e655e984028614e50afe760acc754de70986dc7651ac760d5817c665ef1238d0811190763dbfd65993408d12dcf7926be6c71afb5d8a10528c174647934bdd1e4fcf1f4a800b8a74a7ae93bf60b02c602900a981bdb75e9de2b17f359ee"

然后我做

    Dim token2 = CookieAwareWebClient.downloadString1("https://api3.stex.com/oauth/token", "grant_type=authorization_code&code=" + code + "&client_id=" + _apiKey1 + "&client_secret=" + _secret1 + "&redirect_uri=https://apidocs.stex.com/oauth2-redirect.html", {})

    Dim jtoken1 = JToken.Parse(token2)
    Dim refreshtoken = jtoken1.Item("refresh_token").ToString

它有效。

但是,此代码不起作用

Dim token2 = CookieAwareWebClient.downloadString1("https://api3.stex.com/oauth/token", "grant_type=authorization_code&code=" + code + "&client_id=" + _apiKey1 + "&client_secret=" + _secret1, {})

    Dim jtoken1 = JToken.Parse(token2)
    Dim refreshtoken = jtoken1.Item("refresh_token").ToString

唯一的区别是在我添加的第一个代码中+ + "&redirect_uri=https://apidocs.stex.com/oauth2-redirect.html"

基本上,我正在创建一个stex api。

我的客户只有一个重定向URL。那么,为什么我必须指定不再使用的重定向URL,并且服务器仍然知道指向https://api3.stex.com/oauth/token url的服务器?

我想我读了RFC

  

4.1.3。访问令牌请求

     

客户端通过使用“ application / x-www-form-urlencoded”发送以下参数来向令牌端点发出请求   附录B中的格式,在HTTP中使用UTF-8字符编码   请求实体-正文:

     

[...]

     

redirect_uri

     

必需,如果如第4.1.1节所述,授权请求中包含“ redirect_uri” 参数及其值   必须相同。

它说,如果包含该参数,则需要redirect_URI。

我请求授权代码时未包含该参数。

0 个答案:

没有答案