`
laoer
  • 浏览: 52275 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用Google API来取得Google帐户的联系人列表

阅读更多

前几天写了一篇从Web Mail里取得用户通讯录的方法的文章 ,里面提到了Google的Account Authentication API ,今天我们就用Account Authentication APIGoogle Contacts Data API 来做一个取得Google帐户联系人的测试。

首先我们要看一下Account Authentication API ,对于网络应用来说我们选择对网络应用程序的验证 ,对网络应用程序的验证也提供了 OAuthAuthSub 两种认证方式,我们选择AuthSub的认证方式,认证过程如下图

Google Authsub Diagram

用户在第三方Web应用上向Google Accounts Authentication发送AuthSub的HTTP请求,如果用户没有登录Google,则会显示登录页面,用户登录之后,会提示用户是否接受或 拒绝这个第三方Web应用的访问请求,如果用户同意,Google就会生成一个token,转回第三方Web应用,第三方Web应用凭此token,可以 请求Google的相关Sevice,比如联系人的服务,从而取得相关数据。

AuthSub有两种接口,一个是AuthSubRequest (A call to this method sends the user to a Google Accounts web page, where the user is given the opportunity to log in and grant Google account access to the web application. If successful, Google provides a single-use authentication token, which the web application can use to access the user’s Google service data.)另一个是AuthSubSessionToken (A call to this method allows the web application to exchange a single-use token for a session token),按照Google文档的理解,AuthSubRequest 是一个单次的认证,AuthSubSessionToken 应该是带会话(Session)的。

我们就举Google提供的例子

https://www.google.com/accounts/AuthSubRequest?
   next=http%3A%2F%2Fwww.yourwebapp.com%2Fshowcalendar.html
   &scope=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2F
   &session=1
   &secure=1

https://www.google.com/accounts/AuthSubRequest就是AuthSub请求的地址,next表示认证 之后要转回的地址,一般就是第三方Web应用的地址,也就是你网站的一个地址,Google会把token附带到这个地址后面,scope是你要请求的 Google服务地址,这个例子里是要访问Google日历的数据,另外两个参数看Google的文档吧。

接下来,我们要取得Google帐户的联系人,我们先看看Google提供了多少可以访问的服务吧,访问Google数据API ,Google提供的数据还着不少,有日历、文档、图书搜索、网路相册等等,当然也包括我们所需要的联系人的API ,Google数据API要好好了解一下,总体来说Google提供一个Gdata的数据格式,和RSS的feed类似的格式,通过相关服务的访问地址,就可以返回Gdata数据,至于Gdata的读取,已经有了很多程序语言的封装好的程序(http://code.google.com/intl/zh-CN/apis/gdata/clientlibs.html ),直接用就可以了,我们用PHP举例,PHP对Gdata的封装,是Zend Framework里的Gdata包,在http://framework.zend.com/download/gdata 下载就可以了,但是现在Zend Gdata的包里没有直接的Google contacts的组件,但不要紧,通过Zend Gdata里基础数据的访问,可以取得Google contacts。

我们看看Google Contacts Data API的开发人员指南 吧,取得联系人的Feed URL是

http://www.google.com/m8/feeds/contacts/userEmail

/full
或
http://www.google.com/m8/feeds/contacts/default/full

那我们就用PHP来写一个取得联系人的程序吧

 

require_once 'Zend/Loader.php';
Zend_Loader::loadClass ( 'Zend_Gdata' );
Zend_Loader::loadClass ( 'Zend_Gdata_AuthSub' );
Zend_Loader::loadClass ( 'Zend_Gdata_ClientLogin' );
Zend_Loader::loadClass ( 'Zend_Gdata_Query' );
Zend_Loader::loadClass ( 'Zend_Gdata_Feed' );
 
$my_contacts = 'http://www.google.com/m8/feeds/contacts/default/full';
 
if (! isset ( $_SESSION ['cal_token'] )) {
	if (isset ( $_GET ['token'] )) {
		// You can convert the single-use token to a session token.
		$session_token = Zend_Gdata_AuthSub::getAuthSubSessionToken ( $_GET ['token'] );
		// Store the session token in our session.
		$_SESSION ['cal_token'] = $session_token;
	} else {
		// Display link to generate single-use token
		$googleUri = Zend_Gdata_AuthSub::getAuthSubTokenUri ( 'http://' . $_SERVER ['SERVER_NAME'] . $_SERVER ['REQUEST_URI'], $my_contacts, 0, 1 );
		echo "Click <a href='$googleUri'>here</a> " . "to authorize this application.";
		exit ();
	}
}
 
// Create an authenticated HTTP Client to talk to Google.
$client = Zend_Gdata_AuthSub::getHttpClient ( $_SESSION ['cal_token'] );
 
$gdata = new Zend_Gdata ( $client );
$query = new Zend_Gdata_Query ( $my_contacts );
//$query->setMaxResults(10);
$query->setMaxResults ( 2000 );
$feed = $gdata->getFeed ( $query );
 
foreach ( $feed as $entry ) {
 
	$parts = $entry->getExtensionElements ();
	foreach ( $parts as $p ) {
		$element = $p->getDOM ();
		switch ($element->tagName) {
			case 'email' :
				print ( "Email: " . $element->getAttribute ( 'address' ) . "<br/>" );
				break;
			case 'phoneNumber' :
				print ( "Phone: " . $element->nodeValue . "<br/>" );
				break;
			default :
				continue;
		}
	}
 
}

 放在你服务器上运行一下吧(别忘了Zend Gdata包要加进去)。

1
2
分享到:
评论

相关推荐

    Google Contact API 实例

    2. **API调用**:使用获取的访问令牌,向Google Contact API发送请求,通常会使用`gapi.client.load('contacts', 'v3')`加载API,然后调用`gapi.client.contacts.contacts.list()`获取联系人列表。 3. **数据解析**...

    google 翻译API的使用

    在IT行业中,API(应用程序接口)...总的来说,Google翻译API为开发者提供了一种高效、便捷的多语言翻译解决方案。结合适当的编程技巧和最佳实践,开发者可以将这个强大的工具无缝地融入自己的项目中,实现全球化服务。

    Google AdWords API Service

    在AdWords API中使用C#,开发者可以利用.NET框架的强大功能,创建稳定且高效的代码来访问和操作AdWords账户。C#的语法简洁明了,支持类型安全,使得编写AdWords API客户端更加便捷。 **Google AdWords API的主要...

    谷歌天气预报api实例

    要使用谷歌天气预报API,我们需要以下几个步骤: 1. **获取API密钥**:首先,你需要在谷歌云平台(Google Cloud Platform)上创建一个项目,并启用天气API服务。这通常需要注册一个账户并可能涉及费用,但有时会...

    谷歌眼镜MirrorAPI开发

    谷歌眼镜Mirror API开发是针对谷歌智能眼镜Google Glass的一项重要技术,允许开发者构建可以在这款可穿戴设备上运行的应用程序。这个开发领域涵盖了多个方面,包括Web技术和Android应用开发,旨在为用户提供创新的...

    google-api-java-client-1.3.1-alpha

    《谷歌API Java客户端1.3.1-alpha:Android云服务开发的得力工具》 谷歌API Java客户端库是Google提供的一套强大工具,用于帮助开发者在Java环境中与各种Google服务进行交互,包括但不限于Google Cloud Platform...

    google-api-php-client_zip1df_google_

    1. **身份验证**:通过OAuth 2.0进行用户授权,允许用户安全地登录并访问其Google账户相关数据。 2. **服务调用**:调用各种Google API,如Google Sheets来读写电子表格,Google Drive来上传和管理文件,Google Maps...

    Google API应用

    - 对于敏感操作,可能需要用户授权,例如 OAuth 2.0 认证流程,用户需要在首次使用时授权你的应用访问他们的 Google 账户信息。 3. **API 调用** - 使用 Google 提供的 SDK 或 RESTful API 进行编程调用。SDK ...

    c#使用谷歌身份验证GoogleAuthenticator

    本文将深入探讨如何在C#项目中使用谷歌身份验证器(Google Authenticator)来增强系统的安全性。 谷歌身份验证器(Google Authenticator)是一种两步验证(2-Step Verification)工具,它为用户账户提供了额外的...

    google cloud speech api v1beta1官方文档整理版(英文,带目录)

    - **创建服务账户**:参见文档中的“设置服务账户”部分来了解如何授权应用程序使用 Cloud Speech API 服务。 - **获取密钥文件**:获取服务账户的 JSON 密钥文件。 - **设置环境变量**:设置 `GOOGLE_...

    ocr_googleapi_test:谷歌API测试(OCR)

    【标题】"ocr_googleapi_test:谷歌API测试(OCR)" 涉及的主要知识点是光学字符识别(Optical Character Recognition, OCR)技术以及如何利用谷歌的API来实现这一功能。OCR是一种计算机技术,用于将图像中的印刷体或...

    Google App Engine搭建Twitter API Proxy

    例如,在某些情况下,可能需要在不支持 OAuth 认证的平台上使用 Twitter API,此时可以通过 API Proxy 来解决认证问题。 #### 二、Google App Engine 是什么? Google App Engine (GAE) 是由 Google 提供的一个...

    基于GoogleAPI的翻译小程序的实现(二)

    总的来说,"基于GoogleAPI的翻译小程序的实现(二)"这篇博文提供了一个很好的起点,教你如何利用Google Translate API创建一个实用的翻译工具。通过学习和实践,你可以进一步扩展这个小程序,增加更多功能,例如语音...

    Google 地图获取API Key详细教程

    首先,为了获取API Key,你需要有一个Google账户。如果你还没有,可以访问Google.com并创建一个新的账户。有了Google账户后,就可以开始申请API Key了。 1. 访问Google Cloud Platform Console 打开网址 ...

    Google App Engine API 大全

    User Service API提供了一种简单的方法来验证用户身份,支持Google账户和其他OpenID身份提供商。它还可以用来获取用户信息,创建会话,并控制应用程序的访问权限。 ### 学习资源 在"Programming.pdf"文件中,你将...

    up_22661_google-api-php-client_ffb28.rar

    5. **处理授权流程**:用户需要授权你的应用访问其Google账户。这通常涉及到重定向用户到Google的授权页面,然后处理返回的授权码。 6. **发起API请求**:一旦获得了访问令牌,你就可以使用`Google_Client`对象来...

    Python库 | google_api_python_client-1.7.0-py2.py3-none-any.whl

    通过这个库,开发者可以方便地获取用户的授权,以便访问其Google账户中的数据。库提供了相关的类和方法,帮助开发者设置认证流程,包括获取访问令牌、刷新令牌以及处理授权错误。 2. **API调用**: 库中的`Service...

    Laravel开发-authorize-google-api

    通过注入配置好的 Google API 客户端实例,我们可以调用相应的 API 方法,例如获取用户的 Gmail 邮件列表。 6. **错误处理和刷新令牌** 记住处理可能的错误,比如访问令牌过期。当访问令牌接近过期时,可以通过 ...

    Google API for Java.7z

    Google API for Java是一套强大的工具,它允许Java开发者轻松地与Google的各种服务进行交互,包括但不限于Google Cloud Platform、Google Maps、Google Drive、Google Calendar等。这个压缩包包含了所有必要的库和...

    获取Gmail联系人列表

    要获取Gmail联系人列表,我们首先需要设置一个Google账户,并获取OAuth 2.0的访问令牌。OAuth是Google推荐的安全授权方式,它允许应用在用户授权的情况下访问其数据,而无需知道用户的登录凭据。 下面是一段简单的...

Global site tag (gtag.js) - Google Analytics