public void ParseFragment_QueryStringWithFragmentTest() { var uri = new Uri("http://foo.com/bar?c=something#a=123&b=whatever"); var parameters = uri.ParseFragment(); Assert.AreEqual(2, parameters.Count); Assert.AreEqual("123", parameters["a"]); Assert.AreEqual("whatever", parameters["b"]); }
public void ParseFragmentTest() { Uri uri = new Uri("http://foo.com/bar#a=123&b=whatever"); Dictionary<string, string> parameters = uri.ParseFragment(); Assert.AreEqual(2, parameters.Count); Assert.AreEqual("123", parameters["a"]); Assert.AreEqual("whatever", parameters["b"]); }
public static MicrosoftAccessInfo Parse(Uri uri) { Dictionary<string, string> parameters = uri.ParseFragment(); string accessToken, expiresIn; int expirationInSeconds; MicrosoftAccessInfo accessInfo = null; if (parameters.TryGetValue(AccessTokenParameter, out accessToken) && parameters.TryGetValue(ExpiresInParameter, out expiresIn) && Int32.TryParse(expiresIn, out expirationInSeconds)) { string refreshToken; parameters.TryGetValue(RefreshTokenParameter, out refreshToken); accessInfo = new MicrosoftAccessInfo(accessToken, refreshToken, TimeSpan.FromSeconds(expirationInSeconds)); } return accessInfo; }
static string GetAccessTokenFromFragment(Uri uri) { HttpValueCollection httpValues = uri.ParseFragment(); string[] accessTokens = httpValues.GetValues("access_token"); return accessTokens.Length > 0 ? accessTokens[0] : null; }
/// <summary> /// Extracts the access token from the specified <see cref="Uri"/>. /// </summary> /// <param name="redirectUri">The redirect <see cref="Uri"/> that contains an access token.</param> /// <returns> /// The <see cref="OAuthTokens"/> object which contains both the <see cref="OAuthTokens.AccessToken"/> and /// <see cref="OAuthTokens.AccessTokenExpiresInSeconds"/> properties. /// </returns> public OAuthTokens ExtractAccessTokenFromUri(Uri redirectUri) { var fragmentParts = redirectUri.ParseFragment(); if (!fragmentParts.ContainsKey("access_token")) { throw new InvalidOperationException(ErrorMessages.UriDoesntContainAccessToken); } if (!fragmentParts.ContainsKey("expires_in")) { throw new InvalidOperationException(ErrorMessages.UriDoesntContainAccessToken); } return OAuthTokens = new OAuthTokens(fragmentParts["access_token"], int.Parse(fragmentParts["expires_in"]), null); }
public void ParseFragment_PlainFragmentTest() { var uri = new Uri("http://foo.com/bar#random"); var parameters = uri.ParseFragment(); Assert.AreEqual(0, parameters.Count); }