2014-12-03 101 views
6

我想在我的网站使用PHP获取GMail联系人列表。谷歌API - 获取联系人列表使用PHP

而且教程中,我提到Here

CODE:

<?php 

// disable warnings 
if (version_compare(phpversion(), "5.3.0", ">=") == 1) 
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); 
else 
error_reporting(E_ALL & ~E_NOTICE); 

$sClientId = '564766218700- 
fgtj5fba9h15g8na4khdho1uavo0rtjq.apps.googleusercontent.com'; 
$sClientSecret = 'GldOKp2S2ABdp-7owp3ZO_cE'; 
$sCallback = 'http://localhost/GmailContact/index.php'; // callback url, don't forget 
to change it to your! 
$iMaxResults = 20; // max results 
$sStep = 'auth'; // current step 

// include GmailOath library https://code.google.com/p/rspsms/source/browse/trunk 
/system/plugins/GmailContacts/GmailOath.php?r=11 
include_once('GmailOath.php'); 

session_start(); 

// prepare new instances of GmailOath and GmailGetContacts 
$oAuth = new GmailOath($sClientId, $sClientSecret, $argarray, false, $sCallback); 
$oGetContacts = new GmailGetContacts(); 

if ($_GET && $_GET['oauth_token']) { 

$sStep = 'fetch_contacts'; // fetch contacts step 

// decode request token and secret 
$sDecodedToken = $oAuth->rfc3986_decode($_GET['oauth_token']); 
$sDecodedTokenSecret = $oAuth->rfc3986_decode($_SESSION['oauth_token_secret']); 

// get 'oauth_verifier' 
$oAuthVerifier = $oAuth->rfc3986_decode($_GET['oauth_verifier']); 

// prepare access token, decode it, and obtain contact list 
$oAccessToken = $oGetContacts->get_access_token($oAuth, $sDecodedToken, 
$sDecodedTokenSecret, $oAuthVerifier, false, true, true); 
$sAccessToken = $oAuth->rfc3986_decode($oAccessToken['oauth_token']); 
$sAccessTokenSecret = $oAuth->rfc3986_decode($oAccessToken['oauth_token_secret']); 
$aContacts = $oGetContacts->GetContacts($oAuth, $sAccessToken, $sAccessTokenSecret, 
false, true, $iMaxResults); 

// turn array with contacts into html string 
$sContacts = $sContactName = ''; 
foreach($aContacts as $k => $aInfo) { 
    $sContactName = end($aInfo['title']); 
    $aLast = end($aContacts[$k]); 
    foreach($aLast as $aEmail) { 
     $sContacts .= '<p>' . $sContactName . '(' . $aEmail['address'] . ')</p>'; 
    } 
} 
} else { 
// prepare access token and set it into session 
$oRequestToken = $oGetContacts->get_request_token($oAuth, false, true, true); 
$_SESSION['oauth_token'] = $oRequestToken['oauth_token']; 
$_SESSION['oauth_token_secret'] = $oRequestToken['oauth_token_secret']; 
} 

?> 
<!DOCTYPE html> 
<html lang="en" > 
<head> 
    <meta charset="utf-8" /> 
    <title>Google API - Get contact list | Script Tutorials</title> 
    <link href="css/main.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <header> 
     <h2>Google API - Get contact list</h2> 
     <a href="http://www.script-tutorials.com/google-api-get-contact-list/" 
class="stuts">Back to original tutorial on <span>Script Tutorials</span></a> 
    </header> 
    <img src="oauthLogo.png" class="google" alt="google" /> 

<?php if ($sStep == 'auth'): ?> 
    <center> 
    <h1>Step 1. OAuth</h1> 
    <h2>Please click <a href="https://www.google.com/accounts 
/OAuthAuthorizeToken?oauth_token=<?php echo 
$oAuth->rfc3986_decode($oRequestToken['oauth_token']) ?>">this link</a> in order to 
get access token to receive contacts</h2> 
    </center> 
<?php elseif ($sStep == 'fetch_contacts'): ?> 
    <center> 
    <h1>Step 2. Results</h1> 
    <br /> 
    <?= $sContacts ?> 
    </center> 
<?php endif ?> 

我有错误遇到如:

的OAuth令牌参数丢失。 这就是我们所知道的。

问题: 1.如何获取OAuth访问令牌?

请帮帮我。

+0

检查此链接oauth PHP客户端http://25labs.com/import-gmail-or-google-contacts-using-google-contacts-data-api-3-0-and-oauth-2-0- in-php/ – SGC 2014-12-03 18:07:37

+0

@SGC我使用了上面指定的tutorial.But我的电子邮件地址显示为空白。 – 2014-12-04 06:39:14

+0

@SGC echo($ xmlrespose)返回:usageLimits accessNotConfigured访问未配置。 API未针对您的项目启用,或者API密钥上配置了per-IP或per-Referer限制,并且请求不符合这些限制。请使用Google Developers Console更新您的配置。 https://console.developers.google.com。 – 2014-12-04 10:32:51

回答

0

有几种访问令牌请求的方法,它们根据您正在构建的应用程序的类型而有所不同。

例如,JavaScript应用程序可能会使用浏览器重定向到Google来请求访问令牌,而安装在没有浏览器的设备上的应用程序使用Web服务请求。

有些请求需要身份验证步骤,用户使用其Google帐户登录。登录后,会询问用户是否愿意授予应用程序请求的权限。这个过程称为用户同意。

如果用户授予权限,Google授权服务器会向您的应用程序发送访问令牌(或您的应用程序可用于获取访问令牌的授权码)。如果用户未授予权限,则服务器返回错误。

这里是link oauth游乐场,这有助于了解Oauth的概念。

此外,请检查此link的联系人API。