如何修复 Python Cloudflare CloudFlare.exceptions.CloudFlareAPIError: no token defined

问题:

你想使用 Cloudflare API 运行程序,例如此示例代码:

cloudflare_example.py
#!/usr/bin/env python3
import CloudFlare

cf = CloudFlare.CloudFlare({
  "email": "[email protected]",
  "token": "Oochee3_aucho0aiTahc8caVuak6Que_N_Aegi9o"
})
zones = cf.zones.get()
for zone in zones:
  zone_id = zone['id']
  zone_name = zone['name']
  print(zone_id, zone_name)

但尝试运行时,你看到以下错误消息:

cloudflare_traceback.txt
Traceback (most recent call last):
  File "run.py", line 8, in
    zones = cf.zones.get()
  File "/usr/local/lib/python3.8/dist-packages/CloudFlare/cloudflare.py", line 672, in get
    return self._base.call_with_auth('GET', self._parts,
  File "/usr/local/lib/python3.8/dist-packages/CloudFlare/cloudflare.py", line 117, in call_with_auth
    self._AddAuthHeaders(headers, method)
  File "/usr/local/lib/python3.8/dist-packages/CloudFlare/cloudflare.py", line 90, in _AddAuthHeaders
    raise CloudFlareAPIError(0, 'no token defined')
CloudFlare.exceptions.CloudFlareAPIError: no token defined

解决方案

你使用了错误的语法向 CloudFlare.CloudFlare() 传递参数,直接使用 email=… 和 token=… 参数而不是使用 dict

cloudflare_creds_example.py
cf = CloudFlare.CloudFlare(
  email="[email protected]",
  token="Oochee3_aucho0aiTahc8caVuak6Que_N_Aegi9o"
)

注意并非所有令牌都能执行所有操作,如果你执行令牌不允许的操作,你将看到类似 CloudFlare.exceptions.CloudFlareAPIError: Invalid request headers 的错误消息


Check out similar posts by category: Networking, Python