Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用google API获取gmail联系人,显示错误帐户已禁用_Php_Api_Curl_Google Api - Fatal编程技术网

Php 使用google API获取gmail联系人,显示错误帐户已禁用

Php 使用google API获取gmail联系人,显示错误帐户已禁用,php,api,curl,google-api,Php,Api,Curl,Google Api,我正在使用PHP。我想获取一个用户的所有gmail联系人,我正在使用一个PHP代码,通过CURL调用GoogleAPI。但是,当我在localhost上执行此操作时,它运行良好,并为我提供了所有联系人 但当我在美国的在线服务器上这样做时,它会给我禁用的响应帐户,并接收来自谷歌的同一用户的安全邮件 我正在使用以下代码: function getGmailContacts($user, $password) { //==========================================

我正在使用PHP。我想获取一个用户的所有gmail联系人,我正在使用一个PHP代码,通过CURL调用GoogleAPI。但是,当我在localhost上执行此操作时,它运行良好,并为我提供了所有联系人

但当我在美国的在线服务器上这样做时,它会给我禁用的响应帐户,并接收来自谷歌的同一用户的安全邮件

我正在使用以下代码:

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;
    }
}
}

那封信里有

最近有人试图使用应用程序登录到您的帐户 谷歌帐户…地址:纽约,纽约,美国

我想这个错误是由于位置改变引起的。
有人能帮我吗?提前感谢。

这可能是谷歌的安全功能,不确定这是否有效。但是你是否尝试过将时区更改为与开发机器相同的时区?但是,它会在其他时区上出现错误?我尝试过更改时区,但不起作用。这可能是谷歌的安全功能,不确定这是否起作用。但是您是否尝试过将时区更改为与您的开发机器相同的时区?但是,它会在其他时区上出错?我尝试过更改时区,但不起作用。