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

如何在无UI服务器上通过Python脚本调用Google People API添加联系人?

无UI服务器环境下用Python创建Google联系人:完全可行!

你遇到的Chrome弹窗问题,是因为官方快速启动指南默认用了交互式OAuth授权流程——这个流程依赖浏览器完成登录授权,显然不适合无头服务器。我们只需要调整授权方式,换成离线模式获取Refresh Token,就能在服务器上完全无交互地调用Google People API创建联系人了。

核心方案:先本地获取Refresh Token,服务器复用

个人Google账号推荐用这个方案,不需要域管理员权限,操作简单:

步骤1:本地生成包含Refresh Token的授权文件(仅需运行一次)

在有浏览器的本地机器上,运行以下代码,它会引导你登录Google账号授权,并生成一个token.json文件(里面包含能长期刷新权限的Refresh Token):

from google_auth_oauthlib.flow import InstalledAppFlow

# 授权范围:需要联系人的读写权限
SCOPES = ['https://www.googleapis.com/auth/contacts']

def generate_refresh_token():
    # 加载从Google Cloud Console下载的客户端凭据(credentials.json)
    flow = InstalledAppFlow.from_client_secrets_file(
        'credentials.json', SCOPES)
    # 启用离线模式,强制获取Refresh Token
    creds = flow.run_local_server(
        port=0, 
        access_type='offline', 
        prompt='consent'  # 强制弹出授权页面,确保返回Refresh Token
    )
    # 保存授权信息到文件
    with open('token.json', 'w') as token_file:
        token_file.write(creds.to_json())
    print("已生成token.json,将此文件上传到服务器即可")

if __name__ == '__main__':
    generate_refresh_token()

小提示:credentials.json需要从Google Cloud Console下载——创建一个OAuth 2.0客户端ID,类型选择「桌面应用」即可。同时别忘了在控制台里启用People API。

步骤2:服务器端编写创建联系人的脚本

把本地生成的token.json和credentials.json上传到服务器,然后运行以下代码就能创建包含姓名和手机号的联系人:

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

SCOPES = ['https://www.googleapis.com/auth/contacts']

def create_google_contact(full_name, phone_number):
    # 加载之前生成的授权文件
    creds = Credentials.from_authorized_user_file('token.json', SCOPES)
    # 构建People API服务实例
    service = build('people', 'v1', credentials=creds)
    
    # 构造联系人数据结构
    contact_data = {
        "names": [
            {
                "givenName": full_name.split()[0],  # 名
                "familyName": full_name.split()[1] if len(full_name.split()) > 1 else ""  # 姓
            }
        ],
        "phoneNumbers": [
            {
                "value": phone_number,
                "type": "mobile"  # 手机号类型,可选home/work等
            }
        ]
    }
    
    # 调用API创建联系人
    response = service.people().createContact(body=contact_data).execute()
    print(f"联系人创建成功!资源ID:{response['resourceName']}")

if __name__ == '__main__':
    # 替换为你要创建的姓名和手机号
    create_google_contact("李四", "+8613900139000")

关键注意事项

  • 确保在Google Cloud Console中启用了People API,否则会提示权限错误
  • token.json里的Refresh Token默认不会过期,除非你手动在Google账号的「安全-第三方应用访问」里撤销授权
  • 服务器环境无需安装浏览器,所有授权逻辑通过Refresh Token自动完成,完全无交互

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:17:29