Php 使用google API获取gmail联系人,显示错误帐户已禁用
我正在使用PHP。我想获取一个用户的所有gmail联系人,我正在使用一个PHP代码,通过CURL调用GoogleAPI。但是,当我在localhost上执行此操作时,它运行良好,并为我提供了所有联系人 但当我在美国的在线服务器上这样做时,它会给我禁用的响应帐户,并接收来自谷歌的同一用户的安全邮件 我正在使用以下代码:Php 使用google API获取gmail联系人,显示错误帐户已禁用,php,api,curl,google-api,Php,Api,Curl,Google Api,我正在使用PHP。我想获取一个用户的所有gmail联系人,我正在使用一个PHP代码,通过CURL调用GoogleAPI。但是,当我在localhost上执行此操作时,它运行良好,并为我提供了所有联系人 但当我在美国的在线服务器上这样做时,它会给我禁用的响应帐户,并接收来自谷歌的同一用户的安全邮件 我正在使用以下代码: function getGmailContacts($user, $password) { //==========================================
function getGmailContacts($user, $password) {
//========================================== step 1: login ===========================================================
$login_url = "https://www.google.com/accounts/ClientLogin";
$fields = array(
'Email' => $user,
'Passwd' => $password,
'service' => 'cp', // <== contact list service code
'source' => 'test-google-contact-grabber',
'accountType' => 'GOOGLE',
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$login_url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS,$fields);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
$returns = array();
foreach (explode("\n",$result) as $line)
{
$line = trim($line);
if (!$line) continue;
list($k,$v) = explode("=",$line,2);
$returns[$k] = $v;
}
curl_close($curl);
//echo "<pre>";
//print_r($returns);exit;
if(!isset($returns['Error'])) {
//========================== step 2: grab the contact list ===========================================================
$feed_url = "http://www.google.com/m8/feeds/contacts/$user/full?alt=json&max-results=250";
$header = array(
'Authorization: GoogleLogin auth=' . $returns['Auth'],
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $feed_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
$data = json_decode($result, true);
//echo "<pre>";
//print_r($data);exit;
$contacts = array();
$i=0;
foreach ($data['feed']['entry'] as $entry)
{
//echo $i." ";
$entryElement = $entry;
if(isset($entryElement['gd$email'])) {
$gdEmailData = $entryElement['gd$email'][0];
//$contact->title = $entryElement['title']['$t'];
//$contact->email = $gdEmailData['address'];
$contacts[$gdEmailData['address']] = $entryElement['title']['$t'];
}
}
//var_dump($contacts);
//print_r($contacts);
return $contacts;
}
else {
if($returns['Error']=='BadAuthentication') {
//echo '<strong>User Name and Password is incorrect.</strong>';
$errorArr = array("Error"=>"User Name and Password is incorrect.");
//print_r($errorArr);
return $errorArr;
}
}
}
那封信里有
最近有人试图使用应用程序登录到您的帐户
谷歌帐户…地址:纽约,纽约,美国
我想这个错误是由于位置改变引起的。
有人能帮我吗?提前感谢。这可能是谷歌的安全功能,不确定这是否有效。但是你是否尝试过将时区更改为与开发机器相同的时区?但是,它会在其他时区上出现错误?我尝试过更改时区,但不起作用。这可能是谷歌的安全功能,不确定这是否起作用。但是您是否尝试过将时区更改为与您的开发机器相同的时区?但是,它会在其他时区上出错?我尝试过更改时区,但不起作用。