Facebook-Login-Xamarin-Forms
Facebook-Login-Xamarin-Forms copied to clipboard
We are not getting email address in facebook response.
I am sending following as a post request. ` public async void WebViewOnNavigated(object sender, WebNavigatedEventArgs e) {
var accessToken = ExtractAccessTokenFromUrl(e.Url);
Console.WriteLine("Token ==>"+accessToken);
if (accessToken != "")
{
try
{
await GetFacebookProfileAsync(accessToken);
Console.WriteLine("Facebook ID ==>" + facebookProfile.id);
if (string.IsNullOrEmpty(facebookProfile.email))
{
Application.Current.MainPage = new NavigationPage(new Register());
}
else
{
await FacebookLoginSubmit();
}
}
catch (Exception)
{
}
}
}
async Task<FacebookProfileResponse> GetFacebookProfileAsync(string accessToken)
{
var requestUrl =
"https://graph.facebook.com/v2.7/me/"
+ "?fields=first_name,last_name,email"
+ "&access_token=" + accessToken;
var httpClient = new HttpClient();
var userJson = await httpClient.GetStringAsync(requestUrl);
facebookProfile = JsonConvert.DeserializeObject<FacebookProfileResponse>(userJson);
return facebookProfile;
}
private string ExtractAccessTokenFromUrl(string url)
{
if (url.Contains("access_token") && url.Contains("&expires_in="))
{
var at = url.Replace("https://www.facebook.com/connect/login_success.html#access_token=", "");
if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
{
at = url.Replace("http://www.facebook.com/connect/login_success.html#access_token=", "");
}
var accessToken = at.Remove(at.IndexOf("&expires_in="));
return accessToken;
}
return string.Empty;
}`
Anyone please help me!