You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP调用Google Contact API获取联系人电话号码

可以通过Google Contacts API获取联系人电话号码!

当然可以获取联系人的电话号码,你的代码里有几个关键问题导致无法正确读取手机号,我来帮你修复:

问题分析

  • 变量名错误:你在读取电话号码时使用了未定义的变量$cnt,但循环遍历的联系人变量是$contact,这直接导致无法获取到正确的字段值。
  • 未处理无电话号码的情况:部分联系人可能没有填写手机号,需要先判断字段是否存在再取值,避免报错或返回默认值的误判。

修正后的核心代码(Callback.php循环部分)

修改循环内的电话号码读取逻辑,同时优化邮箱的容错处理:

if (!empty($contacts['feed']['entry'])) {
    foreach($contacts['feed']['entry'] as $contact) {
        // 正确获取电话号码:先判断字段是否存在,再取值
        $phone = '0000000000';
        if (isset($contact['gd$phoneNumber'][0]['$t'])) {
            $phone = $contact['gd$phoneNumber'][0]['$t'];
        }
        
        // 获取姓名和邮箱地址,增加邮箱不存在的容错
        $email = '无邮箱';
        if (isset($contact['gd$email'][0]['address'])) {
            $email = $contact['gd$email'][0]['address'];
        }
        
        $return[] = array (
            'name'=> $contact['title']['$t'],
            'email' => $email,
            'phone' => $phone
        );
    }
}

额外优化建议

  1. 用官方库处理Token更可靠:你当前手动用Curl请求Token,其实可以直接用Google_Client的内置方法,代码更简洁且不易出错:
// 替换手动Curl获取Token的代码块
$client = new Google_Client();
$client->setClientId($google_client_id);
$client->setClientSecret($google_client_secret);
$client->setRedirectUri($google_redirect_uri);
$client->setScopes(array('https://www.googleapis.com/auth/contacts','https://www.googleapis.com/auth/userinfo.email'));

$token = $client->fetchAccessTokenWithAuthCode($auth_code);
$accesstoken = $token['access_token'];
$client->setAccessToken($accesstoken);
  1. 权限确认:你的Scope已经包含https://www.googleapis.com/auth/contacts,这个权限足够读取联系人的所有基本信息(包括电话号码),无需额外添加权限。

经过以上修正后,你的脚本就能正确获取到联系人的电话号码了!

内容的提问来源于stack exchange,提问作者Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:45:24