/// <summary> /// Gets the extra data obtained from the response message when authentication is successful. /// </summary> /// <param name="response"> /// The response message. /// </param> /// <returns>A dictionary of profile data; or null if no data is available.</returns> protected override NameValueCollection GetExtraData(IAuthenticationResponse response) { FetchResponse fetchResponse = response.GetExtension<FetchResponse>(); if (fetchResponse != null) { var extraData = new NameValueCollection(); extraData.AddItemIfNotEmpty("email", fetchResponse.GetAttributeValue(WellKnownAttributes.Contact.Email)); extraData.AddItemIfNotEmpty("fullName", fetchResponse.GetAttributeValue(WellKnownAttributes.Name.FullName)); return extraData; } return null; }
/// <summary> /// Given the access token, gets the logged-in user's data. The returned dictionary must include two keys 'id', and 'username'. /// </summary> /// <param name="accessToken"> /// The access token of the current user. /// </param> /// <returns> /// A dictionary contains key-value pairs of user data /// </returns> protected override NameValueCollection GetUserData(string accessToken) { MicrosoftClientUserData graph; var request = WebRequest.Create( "https://apis.live.net/v5.0/me?access_token=" + MessagingUtilities.EscapeUriDataStringRfc3986(accessToken)); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { graph = JsonHelper.Deserialize<MicrosoftClientUserData>(responseStream); } } var userData = new NameValueCollection(); userData.AddItemIfNotEmpty("id", graph.Id); userData.AddItemIfNotEmpty("username", graph.Name); userData.AddItemIfNotEmpty("name", graph.Name); userData.AddItemIfNotEmpty("link", graph.Link == null ? null : graph.Link.AbsoluteUri); userData.AddItemIfNotEmpty("gender", graph.Gender); userData.AddItemIfNotEmpty("firstname", graph.FirstName); userData.AddItemIfNotEmpty("lastname", graph.LastName); return userData; }
/// <summary> /// Given the access token, gets the logged-in user's data. /// The returned dictionary must include two keys 'id', and 'username'. /// </summary> /// <param name="accessToken">The access token of the current user.</param> /// <returns>A dictionary contains key-value pairs of user data</returns> protected override NameValueCollection GetUserData(string accessToken) { var uri = new Uri(userEndpoint + "?access_token=" + accessToken); var webRequest = (HttpWebRequest)WebRequest.Create(uri); using (var webResponse = webRequest.GetResponse()) { using (var stream = webResponse.GetResponseStream()) { if (stream == null) return null; NameValueCollection c = new NameValueCollection(); var result = JsonSerializer.DeserializeFromStream<Dictionary<string, string>>(stream); foreach (var item in result) { c.AddItemIfNotEmpty(item.Key, item.Value); } return c; } } }
/// <summary> /// The get user data. /// </summary> /// <param name="accessToken"> /// The access token. /// </param> /// <returns>A dictionary of profile data.</returns> protected override NameValueCollection GetUserData(string accessToken) { var userData = new NameValueCollection(); try { AzureADGraph graphData; WebRequest request = WebRequest.Create( GraphEndpoint + this.tenantid + "/users/" + this.userid + "?api-version=2013-04-05"); request.Headers = new WebHeaderCollection(); request.Headers.Add("authorization", accessToken); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { graphData = JsonHelper.Deserialize<AzureADGraph>(responseStream); } } // this dictionary must contains userData.AddItemIfNotEmpty("id", graphData.ObjectId); userData.AddItemIfNotEmpty("username", graphData.UserPrincipalName); userData.AddItemIfNotEmpty("name", graphData.DisplayName); return userData; } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.ToStringDescriptive()); return userData; } }
/// <summary> /// Given the access token, gets the logged-in user's data. /// The returned dictionary must include two keys 'id', and 'username'. /// </summary> /// <param name="accessToken">The access token of the current user.</param> /// <returns>A dictionary contains key-value pairs of user data</returns> protected override NameValueCollection GetUserData(string accessToken) { FacebookMe graphData = null; string requestUrl = "https://graph.facebook.com/me?access_token=" + UriHelper.EscapeUriDataStringRfc3986(accessToken); var request = System.Net.WebRequest.Create(requestUrl); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { if (responseStream != null) { var serializer = new DataContractJsonSerializer(typeof(FacebookMe)); graphData = (FacebookMe)serializer.ReadObject(responseStream); } } } // this dictionary must contains var userData = new NameValueCollection(); if (graphData != null) { userData.AddItemIfNotEmpty("id", graphData.Id); userData.AddItemIfNotEmpty("username", graphData.Email); userData.AddItemIfNotEmpty("name", graphData.Name); userData.AddItemIfNotEmpty("link", graphData.Link == null ? null : graphData.Link.AbsoluteUri); userData.AddItemIfNotEmpty("gender", graphData.Gender); userData.AddItemIfNotEmpty("birthday", graphData.Birthday); } return userData; }
/// <summary> /// The get user data. /// </summary> /// <param name="accessToken"> /// The access token. /// </param> /// <returns>A dictionary of profile data.</returns> protected override NameValueCollection GetUserData(string accessToken) { FacebookGraphData graphData; var request = WebRequest.Create( "https://graph.facebook.com/me?access_token=" + MessagingUtilities.EscapeUriDataStringRfc3986(accessToken)); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { graphData = JsonHelper.Deserialize<FacebookGraphData>(responseStream); } } // this dictionary must contains var userData = new NameValueCollection(); userData.AddItemIfNotEmpty("id", graphData.Id); userData.AddItemIfNotEmpty("username", graphData.Email); userData.AddItemIfNotEmpty("name", graphData.Name); userData.AddItemIfNotEmpty("link", graphData.Link == null ? null : graphData.Link.AbsoluteUri); userData.AddItemIfNotEmpty("gender", graphData.Gender); userData.AddItemIfNotEmpty("birthday", graphData.Birthday); return userData; }