.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> ASP.NET >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Google Contact API

Posted By:Mihir Soni       Posted Date: February 01, 2011    Points: 75    Category: ASP.NET    URL: http://www.dotnetspark.com  

The complete procedure for getting all contacts from google and fill it into an asp.net GridView
 

I have seen that somehow we need all contacts details of users from gmail, So here is a complete guide to extract all contacts from the google contact api of the user.

First step is, you are suppose to know about what is API /web services.

First follow the link and download the latest version of the Gdata API  from Here

After the download gets compelete install it and follow the directory of the installation and search for all DLL file which would be helpful to import it in your projects.

Probably you will find them in following directory.

C:\Program Files (x86)\Google\Google Data API SDK\Samples

Now first thing is to create new website as follows




Now,you need to do is find following DLLs from the above path.

1) Google.GData.Client.dll
2)Google.GData.Contacts.dll
3)Google.GData.Extensions.dll


Right click on your project in solution explorer and click on Add References as follow



Now go to browse tab and import required DLLs which are listed above.


Now, add one page and name it getallcontacts.aspx and add simple gridview in that page.

Go to page load event. Here I am just using simple authentication for user you can use any from google Authntication API.

First import following things as follow.

using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Contacts;
using Google.Contacts;
Above namespaces are used for using Google API in our website/project.

So now on page load write following code. I am also going to explain each and every line.

First I am using simple authentication for username / password as mentioned above you can use OAuth authentication for safety and user trust.

RequestSettings rs = new RequestSettings("ApplicationName", "test@gmail.com", "password");//Application Name,Username,password
ContactsRequest cr = new ContactsRequest(rs);//Request all contacts
rs.AutoPaging = true;//Allow autopaging
Feed f = cr.GetContacts();//Get all contacts
So in first line we are doing settings in which we are passing username and password and application name as perameters. In application name you can give any.

ContactsRequest cr = new ContactsRequest(rs);//Request all contacts
This line will request all contacts from the particular user.
rs.AutoPaging = true;//Allow autopaging
If there are more than 25 contacts you will not able to fetch it so from the above line we can fetch all the contacts from that particular user.

Feed f = cr.GetContacts();//Get all contacts
Now we can get all contacts in FEED object.

Now we are trying to get all this contacts in Gridview so for that we can make dynamic data table and store into it. Then bound it to the Gridview. Following code is just used for making datatable and I am initializing columns here.

DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("Name");
dt.Columns.Add("Home Emails");
dt.Columns.Add("Work Emails");
dt.Columns.Add("Other Emails");
dt.Columns.Add("Home Phone");
dt.Columns.Add("Work Phone");
dt.Columns.Add("Other");
Here I have just taken only few fields you can fetch any of them like address , birthrate etc.
So now our table is ready now we are suppose to fetch single contact extract all details of it and insert this into datatable.
foreach (Contact ex in f.Entries)
{
dr = dt.NewRow();
Name n = ex.Name;
dr[0] = n.FullName;
string homeemail = "";
string workemail = "";
string otheremail = "";
string homephone = "";
string workphone = "";
string otherphone = "";
foreach (EMail email in ex.Emails)
{
if (email.Home == true)
{
if (homeemail.Equals(""))
{
homeemail += email.Address;
}
else
{
homeemail += ",";
homeemail += email.Address;
}
}
if (email.Work == true)
{
if (workemail.Equals(""))
{
workemail += email.Address;
}
else
{
workemail += ",";
workemail += email.Address;
}
}
else
{
if (otheremail.Equals(""))
{
otheremail += email.Address;
}
else
{
otheremail += ",";
otheremail += email.Address;
}
}
dr[1] = homeemail;
dr[2] = workemail;
dr[3] = otheremail;
}
}


Explanation Line by line

foreach (Contact ex in f.Entries)
{
dr = dt.NewRow();
Name n = ex.Name;
dr[0] = n.FullName;
string homeemail = "";
string workemail = "";
string otheremail = "";
string homephone = "";
string workphone = "";
string otherphone = "";
So first line of code is foreach loop which will extract single contact from all contacts which are in FEED object

Now we are suppose to create new line for each contact record so I've created new row.

Name n = ex.Name;
dr[0] = n.FullName;
This line will extract name form the contact and will set this in first column of datatable

Now rest of the variable I've created because it might be possible that contact has more than one same email address like (work, other, home) so we can get each in one column.

Now first we will extract email address from contact.

foreach (EMail email in ex.Emails)
{
if (email.Home == true)
{
if (homeemail.Equals(""))
{
homeemail += email.Address;
}
else
{
homeemail += ",";
homeemail += email.Address;
}
}
So for second foreach loop we will extract all email address of the contacts.

Now we will separate each email address of same category with , .

So rest of code
is as same for work,other and following line is filling value to the columns


dr[1] = homeemail;
dr[2] = workemail;
dr[3] = otheremail
The next line as same as above but difference is I've used it for phone number

//Extract Phone Numbers
foreach (PhoneNumber ph in ex.Phonenumbers)
{
if (ph.Home == true)
{
if (homephone.Equals(""))
{
homephone += ph.Value;
}
else
{
homephone += ",";
homephone += ph.Value;
}

}
else if (ph.Work == true)
{
if (workphone.Equals(""))
{
workphone += ph.Value;
}
else
{
workphone += ",";
workphone += ph.Value;
}

}
else
{
if (otherphone.Equals(""))
{
otherphone += ph.Value;
}
else
{
otherphone += ",";
otherphone += ph.Value;
}
}

dr[4] = homephone;
dr[5] = workphone;
dr[6] = otherphone;
}
dt.Rows.Add(dr);
}

GridView1.DataSource = dt;
GridView1.DataBind();
}
In add add this row to the table and finally bind that table to gridview and call databind method.

Your output will be as following screen shot.


Download source code from HERE

 Subscribe to Articles

     

Further Readings:

Responses
Author: Manas Patnaik         Company URL: http://www.dotnetspark.com
Posted Date: February 01, 2011

Nice Mihir , Thanks for sharing :)
Author: Mihir Soni         Company URL: http://www.dotnetspark.com
Posted Date: February 01, 2011

You are most welcome :)
Author: foram         Company URL: http://www.dotnetspark.com
Posted Date: August 28, 2012

Nice one Mihir

Thanks for sharing.

do you know how to share contacts using api?

Thanks
Foram

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend