C# | Import Google Contacts
Requirements
Section titled “Requirements”To Import Google(Gmail) contacts in ASP.NET MVC application, first download “Google API setup” This will grant the following references:
using Google.Contacts;using Google.GData.Client;using Google.GData.Contacts;using Google.GData.Extensions;Add these to the relevant application.
Source code in the controller
Section titled “Source code in the controller”using Google.Contacts;using Google.GData.Client;using Google.GData.Contacts;using Google.GData.Extensions;using Newtonsoft.Json;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Web;using System.Web.Mvc;
namespace GoogleContactImport.Controllers{ public class HomeController : Controller { public ActionResult Index() { return View(); }
public ActionResult Import() { string clientId = ""; // here you need to add your google client id string redirectUrl = "http://localhost:1713/Home/AddGoogleContacts"; // here your redirect action method NOTE: you need to configure same url in google console Response.Redirect("https://accounts.google.com/o/oauth2/auth?redirect_uri=" + redirectUrl + "&&response_type=code&&client_id=" + clientId + "&&scope=https://www.google.com/m8/feeds/&approval_prompt=force&access_type=offline"); return View(); }
public ActionResult AddGoogleContacts() { string code = Request.QueryString["code"]; if (!string.IsNullOrEmpty(code)) { var contacts = GetAccessToken().ToArray(); if (contacts.Length > 0) { // You will get all contacts here return View("Index",contacts); } else { return RedirectToAction("Index","Home"); } } else { return RedirectToAction("Index", "Home"); } } public List<GmailContacts> GetAccessToken() { string code = Request.QueryString["code"]; string google_client_id = ""; //your google client Id string google_client_sceret = ""; // your google secret key string google_redirect_url = "http://localhost:1713/MyContact/AddGoogleContacts";
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token"); webRequest.Method = "POST"; string parameters = "code=" + code + "&client_id=" + google_client_id + "&client_secret=" + google_client_sceret + "&redirect_uri=" + google_redirect_url + "&grant_type=authorization_code"; byte[] byteArray = Encoding.UTF8.GetBytes(parameters); webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = byteArray.Length; Stream postStream = webRequest.GetRequestStream(); // Add the post data to the web request postStream.Write(byteArray, 0, byteArray.Length); postStream.Close(); WebResponse response = webRequest.GetResponse(); postStream = response.GetResponseStream(); StreamReader reader = new StreamReader(postStream); string responseFromServer = reader.ReadToEnd(); GooglePlusAccessToken serStatus = JsonConvert.DeserializeObject<GooglePlusAccessToken>(responseFromServer); /*End*/ return GetContacts(serStatus); }
public List<GmailContacts> GetContacts(GooglePlusAccessToken serStatus) { string google_client_id = ""; //client id string google_client_sceret = ""; //secret key /*Get Google Contacts From Access Token and Refresh Token*/ // string refreshToken = serStatus.refresh_token; string accessToken = serStatus.access_token; string scopes = "https://www.google.com/m8/feeds/contacts/default/full/"; OAuth2Parameters oAuthparameters = new OAuth2Parameters() { ClientId = google_client_id, ClientSecret = google_client_sceret, RedirectUri = "http://localhost:1713/Home/AddGoogleContacts", Scope = scopes, AccessToken = accessToken, // RefreshToken = refreshToken };
RequestSettings settings = new RequestSettings("App Name", oAuthparameters); ContactsRequest cr = new ContactsRequest(settings); ContactsQuery query = new ContactsQuery(ContactsQuery.CreateContactsUri("default")); query.NumberToRetrieve = 5000; Feed<Contact> ContactList = cr.GetContacts();
List<GmailContacts> olist = new List<GmailContacts>(); foreach (Contact contact in ContactList.Entries) { foreach (EMail email in contact.Emails) { GmailContacts gc = new GmailContacts(); gc.EmailID = email.Address; var a = contact.Name.FullName; olist.Add(gc); } } return olist; }
public class GmailContacts { public string EmailID { get { return _EmailID; } set { _EmailID = value; } } private string _EmailID; }
public class GooglePlusAccessToken {
public GooglePlusAccessToken() { }
public string access_token { get { return _access_token; } set { _access_token = value; } } private string _access_token;
public string token_type { get { return _token_type; } set { _token_type = value; } } private string _token_type;
public string expires_in { get { return _expires_in; } set { _expires_in = value; } } private string _expires_in;
} }}Source code in the view.
Section titled “Source code in the view.”The only action method you need to add is to add an action link present below
<a href='@Url.Action("Import", "Home")'>Import Google Contacts</a>Remarks
Section titled “Remarks”The user contacts data will be received in JSON format, we extract it and finally we loop through this data and thus we get the google contacts.