访问 bit.ly API 以使用 Python 缩短 URL 时出现 403 错误

403 error when accessing bit.ly API to shorten URL with Python

这是我使用的代码:

import re
import sys
import glob
import json
import requests
import os
from pprint import pprint

if len(sys.argv) > 1:
    urls_json = sys.argv[1]
else:
    urls_json = "enlaces.json"

with open( urls_json ) as data_file:
    urls = json.load(data_file)

api_key = os.environ["BITLY_TOKEN"]
group_guid = os.environ["BITLY_USER"]

shortened_links = []
for u in urls:
    payload = json.dumps({'long_url': u[1], "domain": "bit.ly", "group_guid": group_guid })
    print(payload)
    response = requests.post( "https://api-ssl.bitly.com/v4/shorten",
                              data=payload,
                              headers={'Authorization': f"Bearer {api_key}" } )
    pprint(vars(response.raw))
    pprint(vars(response.request))

这始终returns 403 禁止。 header 是正确的,但我不太确定 group_guid;我正在为此使用我的用户名。我通过向 API 发出 curl 请求获得了令牌。任何的想法?这是正确的吗?

只需消除group_guid:

    payload = json.dumps({'long_url': u[1], "domain": "bit.ly" })

尽管在 the API documentation 中作为参数之一明确指出。 returns "Created"

的 201
headers={'Authorization': f"Bearer {api_key}" }

应该是

headers={'Authorization': f"{api_key}" }