private static TokenResponse ParseImplicitResponse(string tokenResponse) { var response = new TokenResponse(); var fragments = tokenResponse.Split('#'); var qparams = fragments[1].Split('&'); foreach (var param in qparams) { var parts = param.Split('='); if (parts.Length == 2) { if (parts[0].Equals("access_token", StringComparison.Ordinal)) { response.AccessToken = parts[1]; } else if (parts[0].Equals("expires_in", StringComparison.Ordinal)) { var expiresIn = int.Parse(parts[1]); var expiresInDateTime = DateTime.UtcNow.AddSeconds(expiresIn); var epoch = expiresInDateTime.ToEpochTime(); response.ExpiresIn = (int)epoch; } } else { throw new InvalidOperationException("Malformed token response."); } } response.TokenType = "Bearer"; return response; }
public static void StoreToken(string identifier, TokenResponse response) { var json = new JsonObject(); json["access_token"] = JsonValue.CreateStringValue(response.AccessToken); json["expires_in"] = JsonValue.CreateNumberValue(response.ExpiresIn); json["token_type"] = JsonValue.CreateStringValue(response.TokenType); var vault = new PasswordVault(); vault.Add(new PasswordCredential(identifier, "token", json.Stringify())); }