Google API 1: Google日历api操作 (PHP)

本文写于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的信息

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)