前几天写了一篇从Web Mail里取得用户通讯录的方法的文章
,里面提到了Google的Account Authentication API
,今天我们就用Account Authentication API
和Google Contacts Data API
来做一个取得Google帐户联系人的测试。
首先我们要看一下Account Authentication API
,对于网络应用来说我们选择对网络应用程序的验证
,对网络应用程序的验证也提供了 OAuth
和 AuthSub
两种认证方式,我们选择AuthSub的认证方式,认证过程如下图
用户在第三方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包要加进去)。
分享到:
相关推荐
2. **API调用**:使用获取的访问令牌,向Google Contact API发送请求,通常会使用`gapi.client.load('contacts', 'v3')`加载API,然后调用`gapi.client.contacts.contacts.list()`获取联系人列表。 3. **数据解析**...
在IT行业中,API(应用程序接口)...总的来说,Google翻译API为开发者提供了一种高效、便捷的多语言翻译解决方案。结合适当的编程技巧和最佳实践,开发者可以将这个强大的工具无缝地融入自己的项目中,实现全球化服务。
在AdWords API中使用C#,开发者可以利用.NET框架的强大功能,创建稳定且高效的代码来访问和操作AdWords账户。C#的语法简洁明了,支持类型安全,使得编写AdWords API客户端更加便捷。 **Google AdWords API的主要...
要使用谷歌天气预报API,我们需要以下几个步骤: 1. **获取API密钥**:首先,你需要在谷歌云平台(Google Cloud Platform)上创建一个项目,并启用天气API服务。这通常需要注册一个账户并可能涉及费用,但有时会...
谷歌眼镜Mirror API开发是针对谷歌智能眼镜Google Glass的一项重要技术,允许开发者构建可以在这款可穿戴设备上运行的应用程序。这个开发领域涵盖了多个方面,包括Web技术和Android应用开发,旨在为用户提供创新的...
《谷歌API Java客户端1.3.1-alpha:Android云服务开发的得力工具》 谷歌API Java客户端库是Google提供的一套强大工具,用于帮助开发者在Java环境中与各种Google服务进行交互,包括但不限于Google Cloud Platform...
1. **身份验证**:通过OAuth 2.0进行用户授权,允许用户安全地登录并访问其Google账户相关数据。 2. **服务调用**:调用各种Google API,如Google Sheets来读写电子表格,Google Drive来上传和管理文件,Google Maps...
- 对于敏感操作,可能需要用户授权,例如 OAuth 2.0 认证流程,用户需要在首次使用时授权你的应用访问他们的 Google 账户信息。 3. **API 调用** - 使用 Google 提供的 SDK 或 RESTful API 进行编程调用。SDK ...
本文将深入探讨如何在C#项目中使用谷歌身份验证器(Google Authenticator)来增强系统的安全性。 谷歌身份验证器(Google Authenticator)是一种两步验证(2-Step Verification)工具,它为用户账户提供了额外的...
- **创建服务账户**:参见文档中的“设置服务账户”部分来了解如何授权应用程序使用 Cloud Speech API 服务。 - **获取密钥文件**:获取服务账户的 JSON 密钥文件。 - **设置环境变量**:设置 `GOOGLE_...
【标题】"ocr_googleapi_test:谷歌API测试(OCR)" 涉及的主要知识点是光学字符识别(Optical Character Recognition, OCR)技术以及如何利用谷歌的API来实现这一功能。OCR是一种计算机技术,用于将图像中的印刷体或...
例如,在某些情况下,可能需要在不支持 OAuth 认证的平台上使用 Twitter API,此时可以通过 API Proxy 来解决认证问题。 #### 二、Google App Engine 是什么? Google App Engine (GAE) 是由 Google 提供的一个...
总的来说,"基于GoogleAPI的翻译小程序的实现(二)"这篇博文提供了一个很好的起点,教你如何利用Google Translate API创建一个实用的翻译工具。通过学习和实践,你可以进一步扩展这个小程序,增加更多功能,例如语音...
首先,为了获取API Key,你需要有一个Google账户。如果你还没有,可以访问Google.com并创建一个新的账户。有了Google账户后,就可以开始申请API Key了。 1. 访问Google Cloud Platform Console 打开网址 ...
User Service API提供了一种简单的方法来验证用户身份,支持Google账户和其他OpenID身份提供商。它还可以用来获取用户信息,创建会话,并控制应用程序的访问权限。 ### 学习资源 在"Programming.pdf"文件中,你将...
5. **处理授权流程**:用户需要授权你的应用访问其Google账户。这通常涉及到重定向用户到Google的授权页面,然后处理返回的授权码。 6. **发起API请求**:一旦获得了访问令牌,你就可以使用`Google_Client`对象来...
通过这个库,开发者可以方便地获取用户的授权,以便访问其Google账户中的数据。库提供了相关的类和方法,帮助开发者设置认证流程,包括获取访问令牌、刷新令牌以及处理授权错误。 2. **API调用**: 库中的`Service...
通过注入配置好的 Google API 客户端实例,我们可以调用相应的 API 方法,例如获取用户的 Gmail 邮件列表。 6. **错误处理和刷新令牌** 记住处理可能的错误,比如访问令牌过期。当访问令牌接近过期时,可以通过 ...
Google API for Java是一套强大的工具,它允许Java开发者轻松地与Google的各种服务进行交互,包括但不限于Google Cloud Platform、Google Maps、Google Drive、Google Calendar等。这个压缩包包含了所有必要的库和...
要获取Gmail联系人列表,我们首先需要设置一个Google账户,并获取OAuth 2.0的访问令牌。OAuth是Google推荐的安全授权方式,它允许应用在用户授权的情况下访问其数据,而无需知道用户的登录凭据。 下面是一段简单的...