我需要在代码中从Url获​​取访问令牌

时间:2018-05-22 18:34:38

标签: c# asp.net

我已将访问令牌作为来自 Oauth2.0 中服务器的响应,但我无法将其提取到我的代码中。任何人都可以帮我提供C#中的代码或者帮助我提供一些部分吗?

1 个答案:

答案 0 :(得分:0)

var uri = new Uri("http://176.66.102.44:8088/#access_token=eHwAIJd%40bo657tdv8XSaS6hYU%40Ov/XiOWBlMdwo4/h63Q1E%40RcJukIbBnDU%40dh/AYJnEQc4/WmTrUCN3snAntvmchEpZ244LiSIexX/Xiw5jxhR0MkNcS0Y/4bx7Qq4Ws3Wmy3bhFbPSmZQh1KRINwOzY32d8Xz72LGwm8VwyFCn9U1Yo8ERan21EKDvcQpdR%40b4/bDm5eRwIbga0hm7Wog7LnDsQ/OggJqP9CMMkZbqMRN881H4sw0ebMfSZyZf448/HIX5Smfr1%409ofCPzQrZ5GpFVCsaftczTiN%40TnVRPsArbUeLDM2eIAXZyd/QbnBTU840UU3KJ0ohvlBvMi7mYgj0u76JTqRqvyjVnqdNQX6yEPu/6F6SUxEaGkcTRp4h9sVTRZ%40aEMMoQ/0p73GahSPB/G6wuJOfT5PBopnSBrspJq5CvCH2dnz5STkc4ZhpUjj2SLxBDxiJLVruNSbri3sY~&token_type=Bearer&expires_in=120");
var fragments = uri.Fragment.Split('&');

string accessToken = null;
if (fragments.Length > 0 && fragments[0].StartsWith("#access_token="))
{
    accessToken = fragments[0].Remove(0, "#access_token=".Length);
}

if (accessToken != null)
{
    // Do something with the token
}

这是如何工作的,我们将使用Uri类为我们解析Url。 Uri类属性Fragment将检索#之后的所有内容,如文档中所述。

我们将拆分&符号,因为我们只需要access_token参数。我们不需要token_typeexpires_in。我们会忽略这些。

最后一部分就是把多余的数据扔到字符串上,字符串是" #access_token ="所以我们在字符串上调用Remove来做到这一点。这会向accessToken返回一个新字符串,然后您可以使用数据执行任何操作。

另外,请记住,仅当access_token是片段的第一部分时才有效。如果它不是,那么在您执行Split后,您需要查看数组的哪个索引以"access_token="开头

Uri Class

Uri.Fragment Property Info