Tutorial: Import Gmail or Google contacts using Google Contacts Data API and OAuth 2.0 in PHP
First, let me introduce what Contacts Data API and OAuth is.
OAuth
OAuth (Open Authorization) is an open standard for authorization. It allows users to share their private resources (e.g. photos, videos, contact lists) stored on one site with another site without having to hand out their credentials, typically username and password.
Google Contact Data APIs
The Contacts Data API allows client applications to view and update a user’s contacts. Contacts are stored in the user’s Google Account; most Google services have access to the contact list.
You can easily find many source codes for importing Gmail contacts by Googling. But most of them use outdated Google Contact Data API or OAuth. By using the latest APIs we can easily import the contacts with fewer lines of code and is much more efficient than the old version. OAuth is in its second generation today. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. OAuth 2.0 is not backward compatible with OAuth 1.0. Using the older APIs you couldn’t retrieve the contacts in local host. That is, it was difficult to modify or edit the code for the website as the code had to be uploaded again and again to the host. But with the help of new API you can try and edit the code in local host and it works efficiently.
In this tutorial we will be using OAuth 2.0 and Google Contacts Data API.
You can refer more about them at the links below.
http://code.google.com/apis/accounts/docs/OAuth2.html
http://code.google.com/apis/contacts/


Step 1:
Create file ‘oauth.php’ in your web-host. For the example that I have shown, I made a folder ‘oauth’ in localhost and created the file ‘oauth.php’ in the folder.
Thus, in my case, the URL for the file is http://localhost/oauth/oauth.php
Please note your URL for the file, as you will need it in the later steps.
Now paste the code below into ‘oauth.php’ and save the file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | <html>
<head>
<meta name="robots" content="noindex" />
<title>Email address list - Import Gmail or Google contacts</title>
<style type="text/css">
a:link {color:Chocolate;text-decoration: none;}
a:hover {color:CornflowerBlue;}
.logo{width:100%;height:110px;border:2px solid black;background-color:#666666;}
</style>
</head>
<body>
<div class="logo" >
<a href="http://25labs.com/" >
<img style="padding-top: 10px;" src="http://25labs.com/wp-content/themes/TheStyle/images/logo.png"></img>
</a>
</div>
<br/>
<div><b>Visit Tutorial: </b><a style="font-size:17px;" href="http://25labs.com/import-gmail-or-google-contacts-using-google-contacts-data-api-3-0-and-oauth-2-0-in-php/" >Import Gmail or Google contacts using Google Contacts Data API and OAuth 2.0 in PHP</a></div>
<br/>
<div style="padding-left: 50px;">
<?php
$client_id='Your Client ID goes here';
$client_secret='Your Client secret goes here';
$redirect_uri='Your Redirect URIs goes here';
$max_results = 25;
$auth_code = $_GET["code"];
function curl_file_get_contents($url)
{
$curl = curl_init();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($curl,CURLOPT_URL,$url); //The URL to fetch. This can also be set when initializing a session with curl_init().
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); //TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,5); //The number of seconds to wait while trying to connect.
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); //The contents of the "User-Agent: " header to be used in a HTTP request.
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); //To follow any "Location: " header that the server sends as part of the HTTP header.
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); //To automatically set the Referer: field in requests where it follows a Location: redirect.
curl_setopt($curl, CURLOPT_TIMEOUT, 10); //The maximum number of seconds to allow cURL functions to execute.
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //To stop cURL from verifying the peer's certificate.
$contents = curl_exec($curl);
curl_close($curl);
return $contents;
}
$fields=array(
'code'=> urlencode($auth_code),
'client_id'=> urlencode($client_id),
'client_secret'=> urlencode($client_secret),
'redirect_uri'=> urlencode($redirect_uri),
'grant_type'=> urlencode('authorization_code')
);
$post = '';
foreach($fields as $key=>$value) { $post .= $key.'='.$value.'&'; }
$post = rtrim($post,'&');
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,'https://accounts.google.com/o/oauth2/token');
curl_setopt($curl,CURLOPT_POST,5);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
$result = curl_exec($curl);
curl_close($curl);
$response = json_decode($result);
$accesstoken = $response->access_token;
$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$accesstoken;
$xmlresponse = curl_file_get_contents($url);
if((strlen(stristr($xmlresponse,'Authorization required'))>0) && (strlen(stristr($xmlresponse,'Error '))>0)) //At times you get Authorization error from Google.
{
echo "<h2>OOPS !! Something went wrong. Please try reloading the page.</h2>";
exit();
}
echo "<h3>Email Addresses:</h3>";
$xml = new SimpleXMLElement($xmlresponse);
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');
$result = $xml->xpath('//gd:email');
foreach ($result as $title) {
echo $title->attributes()->address . "<br>";
}
?>
</div>
</body></html> |
Step 2:
To use the Google API, you need to register your product at Google. To start the Registration process, head to Google API Console.
If you haven’t created any projects yet, then you will be seeing a page as shown below. Click ‘Create Project…’ button.
If you have created a project earlier, then you will be taken to an existing project directly. Click on the drop down menu that has the current project’s name which is located at the top left of the webpage (In my case it is ‘API Project’) and click ‘Create…’ in ‘Other projects’ tab. Now you will be asked to enter the name of the project. Enter a name as you wish.
Step 3:
Click ‘API Access’ from the let menu.
Step 4:
Now click on ‘Create an OAuth 2.0 client ID…’ button on the page that just opened up.
Step 5:
Fill in a name for the project. When a user clicks to retrieve the contacts, this product name will be shown on the conformation page. So please provide a sensible name.
You can optional give a product logo. The maximum allowed size for the logo is 120 x 60 pixels. This logo will also be displayed on the user’s confirmation page.
After you fill in the details click ‘Next’ button.
Step 6:
Now you will be taken to Client ID settings page.
Choose ‘Web application’ radio button for the Application type.
In ‘Your site or hostname’ block, choose ‘http://’ or ‘https://’ as per your requirement.
Now, enter your domain for the web application. You can also provide ‘localhost’.
Now, click ‘more options’ which lies next to ‘Your site or hostname’.
Enter the url that we created in Step 1 as ‘Authorized Redirect URIs’.
You will automatically have your host address as ‘Authorized JavaScript Origins’. You can enter more origins if you wish.
Click ‘Create client ID’ button.
Step 7:
Now you have registered your product and you can view the API credentials for your web application.
Note down the Client ID, Client secret and Redirect URIs. You will need them in Step 8 and 9.
Step 8:
Open oauth.php that you created in Step 1.
Replace ‘Your Client ID goes here’, ‘Your Client secret goes here’ and ‘Your Redirect URIs goes here’ with the Client ID, Client secret and Redirect URIs that you created in Step 7, respectively.
You can optionally change the number next to ‘$max_results’. It specifies the maximum number of email addresses to be retrieved.
Step 9:
Create the button or link that the user needs to click to retrieve the contact list and set its href parameter to
'https://accounts.google.com/o/oauth2/auth?client_id=your_client_id_goes_here&redirect_uri=your_redirest_urls_goes_here&scope=https://www.google.com/m8/feeds/&response_type=code' |
Replace ‘your_client_id_goes_here’ and ‘your_redirest_urls_goes_here’ with the Client ID and Redirect URIs that you created in Step 7, respectively.
Or you can optionally copy the code given below, replace ‘your_client_id_goes_here’ and ‘your_redirest_urls_goes_here’ as mentioned above, and save it as a new file, may be ‘index.php’.
Then save it to your host.
Please make sure that you place this file in a directory that satisfies ‘JavaScript origins’ that you specified in Step 6.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <html> <head> <meta name="robots" content="noindex" /> <title>Import Gmail or Google contacts using Google Contacts Data API and OAuth 2.0</title> <style type="text/css"> a:link {color:Chocolate;text-decoration: none;} a:hover {color:CornflowerBlue;} .logo{width:100%;height:110px;border:2px solid black;background-color:#666666;} </style> </head> <body> <div class="logo" > <a href="http://25labs.com/" > <img style="padding-top: 10px;" src="http://25labs.com/wp-content/themes/TheStyle/images/logo.png"></img> </a> </div> <br/> <div><b>Visit Tutorial: </b><a style="font-size:17px;" href="http://25labs.com/import-gmail-or-google-contacts-using-google-contacts-data-api-3-0-and-oauth-2-0-in-php/" >Import Gmail or Google contacts using Google Contacts Data API and OAuth 2.0 in PHP</a></div> <br/><br/> <div align="center" > <a style="font-size:25px;font-weight:bold;" href="https://accounts.google.com/o/oauth2/auth?client_id=your_client_id_goes_here&redirect_uri=your_redirest_urls_goes_here&scope=https://www.google.com/m8/feeds/&response_type=code">Click here to Import Gmail Contacts</a> </div> </body> </html> |
We have now successfully completed the web application to retrieve Gmail or Google contacts.
Testing the web application:
Now it’s the turn to test the application. Please follow the steps mentioned below.
Step 10:
Browse to the file that created in Step 9 using your favorite web browser. Click on the button or link that you created to retrieve the contacts.
There is a chance that you get an error similar to the one shown below, especially if you are trying it on localhost.
Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\oauth\oauth.php on line 24
If you are among the unlucky ones, please follow the procedure mentioned below to solve the issue.
Solution:
If you are on localhost open:
php/php.ini
php/browscap/php.ini (if existent)
php/php4/php.ini (if existent)
apache/bin/php.ini (if existent)
If you are on web host, open web host’s ‘php.ini’
Search for ‘extension=php_curl.dll’.
If not found add it to ‘Dynamic Extensions’ section.
If found, uncomment the statement.
Then restart Apache if on localhost.
Try Step 10 again.
Step 11:
You will be taken to a conformation page which will look similar to the one shown below.
Click ‘Allow Access’ button.
Step 12:
If everything went right, you will have a list of email addresses on screen.
Please comment below, if you have any queries or errors.























Nice one bro, i will be grateful that for hotmail/live and yahoo also on php. regards
hi, you got some error in the code you privided above ;
in step 1:
you have to change string names
to:
instead of:
Thank you so much for pointing out the mistake. I have corrected the mistake now.
by the way thanks for the great script, it works like a charm!
great tutorial..but once one will provide email id it gets login to that email id..next time when we click the link it automatically displays the contacts of previous email id..so what to do for asking everytime for new email id and password..
A week before Google updated its API to add Offline and Online access. If you ask for offline access, the user will be asked for conformation only once. For asking the user each time you need set the access mode to online.
But the problem as of now is that: (as said by Google)
“Offline is currently the default (and only) option for web server applications. This default will change soon to online.”
For details refer:
http://code.google.com/apis/accounts/docs/OAuth2WebServer.html
Hi,
apart from addresses of contacts I want their names too, can you show me how that can be done?
Replace the retrieval part with the code below. The below code will return json and so its easier to get the required details from it.
I got this warning:
Warning: Invalid argument supplied for foreach()
May I know what went wrong?
In your case I suppose curl_exec() in function curl_file_get_contents() returns NULL.
Please try adding
along with other options in function curl_file_get_contents().
This is not working, it still returns:
Warning: Invalid argument supplied for foreach()
Sorry please delete my comments, it was working, i got a code wrong. thanks for the troubleshooting!
If i ad the alt and v to the url, it stops working. how else can i ask for version 3.0?
i got the follwing error can you help me please , i working on linux os
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in /opt/lampp/htdocs/oauth/oauth.php:80 Stack trace: #0 /opt/lampp/htdocs/oauth/oauth.php(80): SimpleXMLElement->__construct(”) #1 {main} thrown in /opt/lampp/htdocs/oauth/oauth.php on line 80
Sorry for late response. Was on holidays..
The above Fatal error occurs because there is some problem or error in the url formation or an error in the response from server. Please give a
after
and verify that the response is right.
If you haven’t solved the problem yet, please let me know the output of print_r($xmlresponse) and I will try to help you.
having this problem. XMLresponse returns:
[Image showing the GOOGLE logo]
401. That’s an error.
There was an error in your request. That’s all we know.
….
so that’s what Google’s sending me as the XML response.
I am also getting the same error.
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in C:\xampp\htdocs\oauth\oauth.php:83 Stack trace: #0 C:\xampp\htdocs\oauth\oauth.php(80): SimpleXMLElement->__construct(”) #1 {main} thrown in C:\xampp\htdocs\oauth\oauth.php on line 80
I added- print_r($xmlresponse);
after
$xmlresponse = curl_file_get_contents($url);
but it not printing anything. i.e. $xmlresponse = NULL
Can you please help me?
Thanks in advance,
Deep
In your case I suppose curl_exec() in function curl_file_get_contents() returns NULL.
Please try adding
along with other options in function curl_file_get_contents().
It works
.. Thank you for your kind help..
Thanks TEBE for a nice and simple script.
I used your script in my website to import contact. it was working fine but from some days i found something different during import.
i have 11 contacts in my account but now only 7 contacts get imported using this. there was no error displaying anywhere but just small number of contacts get imported instead of all.
Then i check your demo provided here and here also i got 7 contacts instead of 11. can you help me on this?
Sorry foe my above post TEBE it was just a little mistake with code.
. i am not displaying contacts which have no email ids(like if you are following someone on google+ is added to your google contact and there was no email address or name for that contact.) And here limit is 25 so as per my code there is only 7 contacts from 25 which have email address. so only 7 displaying. i forgot to consider google+ contacts as my gmail contacts.
Again sorry for previous comment and thank you very much to provide such a simple and nice api
Currently I only get email address of my contact.
I want to get first_name, last_name how can? any one help me please
Replace the retrieval part with the code below. The below code will return json and so its easier to get the required details from it.
Thank you for your help.
but I still meet problem
here is my result:
Sophally YI — yi.sophally@gmail.com
rithy pann — pann.rithy@gmail.com
Pisey Pak Sngoun —
soun chanratha —
— phearom.neang@gmail.com
Chinda Sam —
—
—
ឈុន កាំង —
— sovannaroth.hul@gmail.com
— malis.nil@gmail.com
ngeth chanthorn — chanthorn.ngeth@gmail.com
Pisith Phal —
Pisit Heng —
ឈុន កាំង — is my problem
The reason for the blanks as well as those special characters can be identified by analyzing your contact. Check your Google contacts to identify the issue.
make sure your website header part has this tag
Hi,
Thanks for the tutorial.
How to display all the contacts instead of just 25?
Thanks.
Just change the variable $max_results in oauth.php
Thanks for the script, is it possible for users to choose which contact to import instead of randomly picking 25 contacts? if yes, how? thank you in advance!
You can just change the variable ‘$max_results’ in ‘oauth.php’ to a very high value to retrieve all the contacts. With a complete list of contacts you can give the users a choice.
Thanks Tebe Tensing!
thank you for tutorial,
Now I can get email ($cnt['gd$email']['0']['address'])
familyname ($cnt['gd$name']['gd$familyName']['$t'])
I would like to ask one more question how to get phone, city, street,… ?
Code to retrieve the address details (if specified).
Man, I really wish this was in asp.net
Haha.
Do you know of any tutorials as good as this one in. Net?
I am not sure of any
Many many thanks to Tebe Tensing..!
great code, works well
i’m getting error too:
Fatal error: Call to undefined function curl_init() in C:\wamp\www\oauth\oauth.php on line 60
May be because extension curl is not installed on your host.
Follow: http://www.php.net/manual/en/curl.setup.php
Is there any way to get google id from contact api.
Example my google profile (https://plus.google.com/u/0/103518480739358329461/)
I want to retrieve 103518480739358329461 from my contact list.
my google id is 103518480739358329461
what is Rithy(one of my contact list) ‘s google id ?
Please any one help
I suppose its not possible with contacts API. I haven’t tried it out though.
very good. thank you so much!
cannot connect to remote server
how to resplve this error ? :/
do we need to have our website registered ? or we can use it for local appication too ?
You can use it on local application too..
I am also getting the same error.
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in /home/tranlook/public_html/oauth.php:81 Stack trace: #0 /home/tranlook/public_html/oauth.php(81): SimpleXMLElement->__construct(”) #1 {main} thrown in /home/tranlook/public_html/oauth.php on line 81
can u please help me
Nitin
In your case I suppose curl_exec() in function curl_file_get_contents() returns NULL.
Please try adding
along with other options in function curl_file_get_contents().
I am getting a big problem with too many data of my google contact.
It down my browser, my contact is 30000.
Is it possible for pagination ?
example I display 10, 50, 100 per page.
Please any body help me.
Thank you in advanced
Try increasing the variable $max_results in oauth.php and then limiting the output for loop.
Could you tell me how if I want to add contact into my google contact using this API. It would really nice if you want to post on your next tuts. Thanks
Now I am getting error at
http://demo.smbclient.com/admin/index.php?do=inviteuser
It was working fine at
http://smbclient.webtochef.com/admin/index.php?do=inviteuser
Please any body help me
What’s the error???
ok now I change server it working fine
Many thankfully !
I have a bit problem with searching
How can I do a search query ?
example where email like chuch…
Now I done it here is my code
$q = ‘q=’.$_GET['sSearch'].’&’;
$url = ‘https://www.google.com/m8/feeds/contacts/default/full?’.$q.’max-results=’.$maxResult.’&start-index=’.$startIndex.’&alt=json&v=3.0&oauth_token=’.$_SESSION['accesstoken'];
just add q= to query string (url)
Hello every body here help me please
I have a problem if I skip it for a time then my contact data is empty.
If I import again it working fine.
I think this because of session time out.
How can we show the message session time out
How can we notify when this session time out
Hello guys, I have an error when I click on “Allow Access”. Here is the page with the error:
https://intelgy.com/oauth?code=4/s7y5ALhqMXvcimshgAcpHe6PtS63.UmUxMJGaBVsXshQV0ieZDApW7efibwI
Any suggestions?
replace https with http in your code as well as in google created project
i have the error shown in step 10 ,,,,
could u tell me this step clearly
If you are on localhost open:
php/php.ini
php/browscap/php.ini (if existent)
php/php4/php.ini (if existent)
apache/bin/php.ini (if existent)
what do i have to exactly…. thanks
You must enable the extension ‘php_curl.dll’
Open ‘php.ini’ and replace:
with
Thank for tutorial here.
I would like to have a question “How to import google photo’s friends?“;
Please any body help me out.
Thank in advance.
Dude Later it was working fine but automatically sometime it gives me the below error:-
Any help appriciate..
Thanks in advance
Message: file_get_contents(https://www.google.com/m8/feeds/contacts/default/full?oauth_token=) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 401 Authorization required
Is there a way to add more than one xpath’s ?
Hi,
This is nice tutorial. It’s very helpful for me. May i know how to get contacts name, photo in gmail. please help me it’s urgent. Thanks
Hi,
It was a great tutorial and very well described. Thanks !!!
How about login with google using Javascript popup window + php ?
Do you have any idea?
How do we import user photo ?
Thank you very much your tutorial helped me a lot keep it up../.
Really Nice Tutorial…
Thanks Admin…………..
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in C:\wamp\www\test\oauth\oauth.php:83 Stack trace: #0 C:\wamp\www\test\oauth\oauth.php(83): SimpleXMLElement->__construct(”) #1 {main} thrown in C:\wamp\www\test\oauth\oauth.php on line 83
i also did the print_r($xmlresponse); and am not getting any output
works like a charm! thanks!
thank you for this excellent sccript. i managed to get it working from an offline installation but sadly not online.
i’m getting the following error:
Warning: Invalid argument supplied for foreach() in /home/hardlink/hardlink.nl/tests/21/gmail/oauth.php on line 69
unfortunately the fix which prevents cURL from verifying the peer’s certificate doesn’t work.
check it here: http://pastebin.com/Bengqs4C
thanks,
thomas
problem solved, sorry for the hassle!
this is the erroram getting
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in C:\wamp\www\jcow\includes\libs\oauth.php:66 Stack trace: #0 C:\wamp\www\jcow\includes\libs\oauth.php(66): SimpleXMLElement->__construct(”) #1 C:\wamp\www\jcow\includes\libs\invite.module.php(10): include(‘C:\wamp\www\jco…’) #2 C:\wamp\www\jcow\modules\invite\invite.php(11): include(‘C:\wamp\www\jco…’) #3 C:\wamp\www\jcow\includes\libs\apps.inc.php(128): include_once(‘C:\wamp\www\jco…’) #4 C:\wamp\www\jcow\includes\boot.inc.php(13): require_once(‘C:\wamp\www\jco…’) #5 C:\wamp\www\jcow\index.php(20): require_once(‘C:\wamp\www\jco…’) #6 {main} thrown in C:\wamp\www\jcow\includes\libs\oauth.php on line 66
Fatal error: Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in C:\wamp\www\test\oauth.php:85 Stack trace: #0 C:\wamp\www\test\oauth.php(85): SimpleXMLElement->__construct(”) #1 {main} thrown in C:\wamp\www\test\oauth.php on line 85 Please can any one help i have added
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); but still not working
hi,
This was very helpful. By the way i’m trying to get all the contacts of my domain insted of contacts of a single person. I’m the admin of my domain. Can any one suggest me, which API i have to use to get all the contacts of my domain.
Thanks
Arasu.b
How can we display contact’s image…
I am trying to use this script on localhost when i run it will show no error but there is no response and page become time out can any one help??
thankyou
How will you find how many number of contacts have been returned by the server ?
hey nice script, but nothing is coming even the email address of my contact list. nothing appears,blank. can someone help me? thanks!
How to import profile pics???
It stopped on allow access screen when i click on allow access button it refresh and allow access and no thanks button disables.
any help please?
Is there any way in which user can select the contacts and import the selected contacts only ?
Thanks in Advance.
This article really helped me a lot.I have a doubt regarding the link to the Google API. Do we really need to show the “redirecturl” in the
‘https://accounts.google.com/o/oauth2/auth?client_id=your_client_id_goes_here&redirect_uri=your_redirest_urls_goes_here&scope=https://www.google.com/m8/feeds/&response_type=code’
OR
is it possible to hide the redirect url in this link
This is a very good article with very concise code! A+
Would you consider doing one for Yahoo! and Windows Live/Hotmail?
Excellent tutorial, thanks!!!!!!
BTW – As of Feb 4 2013 I did this tutorial using MAMP on Mac and no problem at all, I didn’t even need to specify local host, so pretty awesome!
Hi im getting an error Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
How can i fixed it out
Thanks Thanks a lot..:-)
thanks for ur post its very helpful
Hi,
I’ve followed you code, and works perfectly. But now i’m seeing that, through this code, not all the contacts are not grabbing. I’ve tried another demo and found more contact than this.
Can you please tell me why this difference is making?
I want to get all the email contacts not just some.
Please help me, thanks
Hi, i’ve found the answer,
Thanks
Hi there,
I followed the tutorial and everything is fine with no errors.
However the list of contacts is empty.
1) What would be the reason for that? (I have 33 contacts on my list)
2) How do I debug what could be wrong?
Cheers,
Thanks for wonderful code. I am looking for the same from last one week. Works perfectly!!!
code works, but how to get the gmail username of the person providing the gmail login/password
Works Good!! Fantastic! Very good tutorial TEBE!
Thanx a lot boss..i m very happy..:))
helllo i have got database error while i use this code
This is working perfectly, if you face any issues, just concentrate on your API keys and cross validate that the keys and callback urls are correct.
Phenomenal!!
Got up and running in 15 min. after 2 days of wandering in the wilderness.
Thanks a ton. You just saved me a ton of effort!