Google API 1: Google日历api操作 (PHP)
来源:互联网 发布:多核优化好的网游 编辑:程序博客网 时间:2024/05/17 21:44
本文写于2014/ 10/22,文中所有的连接和文档的状态都是以这个时间点为准。截止到这个时间点,google developer中的文档还是老版的,和新版代码是冲突的。
google api php代码地址 (Beta 版本) :https://github.com/google/google-api-php-client
google calendar api文档地址(文档还没有更新): https://developers.google.com/google-apps/calendar/
1. 首先了解一下google api
google api是一套公共的访问接口,通过这套接口,我们能够访问google的一些数据。通常情况下我们需要首先注册一个Google developer的账户。这里将忽略注册的部分。
想要访问api,主要有两种方法:通过REST接口,通过client library (针对每一种语言,google提供的一套类库),在这篇文章中我们将要讲解的是php语言的client library方式。
2. google api的验证
想要通过google api的获取一些数据。我们首先需要通过google的验证,google提供了两种authentication的方式:
1. 通过一个developer key 来访问。这种方式简单的说就是在访问一些google的公共接口的时候(例如google book 里面查找一个作者的所有书籍),我们通过给google 提供我们的developer key,google 就能够允许我们访问这套api。
虽然这种方法很简单,但是我们不能访问用户的信息。比如你想访问自己的google日历里面的内容,这种方式就不可以了。
2. 通过OAuth2.0来进行用户验证
OAuth 2.0是现在比较好的验证框架,这里不做赘述。通过OAuth2.0验证我们通常情况下会遇到两种情况:client-to-server 和 server-to-server
a. client-to-server
这种情况是用户通过页面来授权,是的程序能够访问某个人的信息。比如,我们想做一个通过第三方登陆,我们就可以按照这种方式来完成。这种方式要求每次用户都要授权给程序,程序才能访问某个用户的信息。
b. server-to-server
但是对于一些客户端程序,我们不可能通过上一种方式,每次都给授权,所以这有了server-to-server这种验证的方式。本文的代码主要是这种方式,通过这种方式来访问某一个用户google日历:
b.1: 创建一个service account, 得到 client_id , Email_address, key_file
b.2: 将用户的日历share给之前创建的那个service account,并且拿到这个日历的 calendar_id
b.3: 通过代码来获取这个calendar的信息
<?phpsession_start ();require_once 'google-api-php-client/src/Google/Client.php';require_once 'google-api-php-client/src/Google/Service/Calendar.php';$client_id = '1039242859127-jvdeilpms8kp84lpsfo5n5jdm9kdrr1e.apps.googleusercontent.com'; //Client ID$Email_address = '1039242859127-jvdeilpms8kp84lpsfo5n5jdm9kdrr1e@developer.gserviceaccount.com'; //Email Address$key_file_location = 'qingscal-dda622e5a217.p12';$calendar_id = 'q3794e2o24i7pg8ellu2fsg93s@group.calendar.google.com';$client = new Google_Client ();$client->setApplicationName ( "Client_Library_Examples" );$key = file_get_contents ( $key_file_location );$scope = array('https://www.googleapis.com/auth/calendar');$cred = new Google_Auth_AssertionCredentials ( $Email_address, $scope, $key );$client->setAssertionCredentials ( $cred );if ($client->getAuth ()->isAccessTokenExpired ()) {$client->getAuth ()->refreshTokenWithAssertion ( $cred );}$service = new Google_Service_Calendar($client);
// 得到所有这个service account 被share的日历$calList = $service->calendarList->listCalendarList();
print_r($service->events->listEvents());
?>
参考文档: https://groups.google.com/forum/#!searchin/google-calendar-api/service$20account$20$20calendar/google-calendar-api/W3I8E49wuCU/ksI29R6NuDsJ
- Google API 1: Google日历api操作 (PHP)
- Google 日历 API 和工具
- php调用Google translate_tts api
- Google翻译接口(PHP API)
- php调用google api 天气预报
- google 登录 login api php
- [Google API](1)简介
- google api
- Google API:
- Google API
- Google API
- Google Translate API of PHP GOOGLE翻译PHP 接口
- 编程利用Google日历API发短信、Email
- PHP调用GOGLE API实现GOOGLE查询
- PHP调用Google Charts API绘图
- 基于PHP的Google Voice 短信API
- Google API php 客户端类库 安装
- ArcGIS for Silverlight API google地图操作
- iOS设计模式 - (1)概述
- SharedPreferences数据存取操作,android引导页一次执行的方法。
- mysqldump: Got error: 1356 mysqldump的重要参数--force
- 每日一博
- c进行预处理、编译、连接、运行是做什么
- Google API 1: Google日历api操作 (PHP)
- loadrunner-mysql脚本(odbc协议)
- sqlserver中获取最后一个字符所在的位置
- Threw NamingException with message: Name [spring.liveBeansView.mbeanDomain]
- open-flash-chart2参数对照表
- Java容器分析--数组
- Android uevent架构
- 2014年10月22日开始我的编程学习,第一个c程序 Hello World !
- com.mysql.jdbc.PreparedStatement和com.mysql.jdbc.PreparedStatement的关系