【发布时间】:2014-05-03 03:52:08
【问题描述】:
在经历了数小时的深深痛苦之后,我终于使用this tutorial(虽然基于 Analytics)更接近了 Google 的 API PHP 客户端的配置和使用。
所以,现在我终于以一种看起来合法和官方的方式验证了自己。我的自然想法是会有一个contrib/Google_ContactsService.php,但令我惊讶的是,在其他 32 个服务类中找不到它。
我想回到从头开始。有什么方法可以 - 合法且正式 - 获取特定用户的联系人? (那里有大量的教程,但都是过时的和hacky)。
编辑:我注意到here 有更新版本的库可用,但在.../Service/ folder 中仍然找不到任何“联系人”服务
编辑:
到目前为止我的进步。最后几行因 Google 的响应而失败:401. There was an error in your request. - 我想这是因为缺乏许可(我没有要求联系人许可)。但是,如果没有“Google_ContactsService.php”,我该怎么做?我迷路了。见代码:
<?php
session_start();
/**
* Require the libaries
*/
require_once 'assets/php/Google/Google_Client.php';
require_once 'assets/php/Google/contrib/Google_AnalyticsService.php'; // from tutorial - I am supposed to get the Contacts Service, which is nowhere to find.
/**
* Set up the Google_Client
*/
$client = new Google_Client();
$client->setAccessType('online'); // default: offline
$client->setApplicationName($apiConfig['application_name']);
$client->setClientId($apiConfig['oauth2_client_id']);
$client->setClientSecret($apiConfig['oauth2_client_secret']);
$client->setRedirectUri($apiConfig['oauth2_redirect_uri']);
$client->setDeveloperKey($apiConfig['developer_key']); // API key
/**
* $service implements the client interface, has to be set before auth call
*/
$service = new Google_AnalyticsService($client);
/**
* Log out
*/
if (isset($_GET['logout'])) { // logout: destroy token
unset($_SESSION['google_token']);
exit('Logged out.');
}
/**
* Google auth code received
*
* Store access token
*/
if (isset($_GET['code'])) { // we received the positive auth callback, get the token and store it in session
$client->authenticate();
$_SESSION['google_token'] = $client->getAccessToken();
}
/**
* Set auth token
*/
if (isset($_SESSION['token'])) { // extract token from session and configure client
$token = $_SESSION['token'];
$client->setAccessToken($token);
}
/**
* If no token, redirect and auth
*/
if (!$client->getAccessToken()) { // auth call to google
$authUrl = $client->createAuthUrl();
header("Location: ".$authUrl);
exit;
}
/**
* Get contacts
*/
$access_token = json_decode($client->getAccessToken())->access_token;
$url = 'https://www.google.com/m8/feeds/contacts/default/full?alt=json&v=3.0&oauth_token='.$access_token;
$response = file_get_contents($url);
exit($response);
echo 'Hello, world.';
【问题讨论】:
标签: php api google-api google-api-php-client google-contacts-api