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

格式化Mac后无法用Python 2.7调用DFP API的问题求助

解决OS Sierra下Python2.7+DFP API认证失败问题

我之前升级OS系统后也碰到过类似的DFP API认证坑,结合你的情况来看,大概率是系统升级后SSL加密库、文件权限或者依赖版本的兼容性问题,给你几个针对性的排查和解决方向:

1. 优先排查OpenSSL版本冲突

OS Sierra自带的OpenSSL版本对旧密钥格式的支持有变化,而Python2.7默认会调用系统的OpenSSL。先检查当前Python绑定的OpenSSL版本:

import ssl
print(ssl.OPENSSL_VERSION)

如果版本是1.0.2及以上,建议用brew安装兼容旧版本的OpenSSL,再重新编译Python2.7绑定这个版本(用pyenv管理会更方便,避免破坏系统Python):

# 安装兼容的旧版OpenSSL
brew install openssl@1.0.2t
# 用pyenv重新编译Python2.7,指定OpenSSL路径
env LDFLAGS="-L/usr/local/opt/openssl@1.0.2t/lib" CPPFLAGS="-I/usr/local/opt/openssl@1.0.2t/include" pyenv install 2.7.18

2. 确认.p12密钥的权限和路径

系统升级后文件权限可能被重置,先给密钥文件赋予可读权限:

chmod 644 your-key-file.p12

另外,脚本里尽量用绝对路径引用密钥文件,避免工作目录变化导致找不到文件:

# 替换成你的密钥实际绝对路径
KEY_FILE_PATH = '/Users/your-name/dfp-scripts/your-key-file.p12'

3. 更新到Python2.7兼容的googleads版本

旧版googleads库可能和OS Sierra的环境不兼容,建议升级到支持Python2.7的最后几个稳定版本:

pip install --upgrade googleads==4.1.0

(4.1.0是官方支持Python2.7的较新版本,更高版本只适配Python3了)

4. 检查认证代码的关键参数

确保你的认证代码没有遗漏必要参数,比如服务账号邮箱、API范围,正确的示例代码大概是这样的:

from googleads import dfp

# 替换成你的实际配置
SERVICE_ACCOUNT_EMAIL = 'your-service-account@your-project.iam.gserviceaccount.com'
KEY_FILE = '/path/to/your-key.p12'
APPLICATION_NAME = 'Your DFP Operation App'

def main():
    # 手动加载服务账号凭证(比从配置文件加载更易排查)
    credentials = dfp.DfpServiceAccountClient.LoadServiceAccountCredentials(
        None, SERVICE_ACCOUNT_EMAIL, KEY_FILE,
        ['https://www.googleapis.com/auth/dfp']
    )
    dfp_client = dfp.DfpClient(credentials, APPLICATION_NAME)
    
    # 用简单接口测试是否认证成功
    user_service = dfp_client.GetService('UserService', version='v202402')
    current_user = user_service.getCurrentUser()
    print(f"当前登录用户: {current_user['name']}")

if __name__ == '__main__':
    main()

重点确认['https://www.googleapis.com/auth/dfp']这个权限范围不能写错。

5. 排查SSL证书验证问题

OS Sierra的根证书更新可能导致Python无法验证Google API的证书,你可以先临时关闭验证测试(仅用于排查,生产环境别这么做):

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

如果临时关闭后能正常运行,说明是证书问题,更新Python的CA证书即可:

pip install --upgrade certifi

如果以上方法都没解决,建议把完整的Traceback报错信息贴出来,能更精准定位问题——不过根据我之前的踩坑经验,前面几个方法大概率能搞定OS Sierra升级后的认证故障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:17:54