Twitter 用户反对 Python 请求

问题描述 投票:0回答:1

我有 Twitter 的基本付费套餐。我正在尝试使用此代码获取用户信息:

import requests
import json
import config

bearer_token = config.bearer_token
url = "https://api.twitter.com/2/users"

params = {'ids': '[4919451, 14151086]',
          'user.fields':'name,description,location,public_metrics,username,created_at,'
               }


def bearer_oauth(r):
    """
    Method required by bearer token authentication.
    """

    r.headers["Authorization"] = f"Bearer {bearer_token}"
    r.headers["User-Agent"] = "v2UserLookupPython"
    return r


def connect_to_endpoint(url,params):
    response = requests.request("GET", url, auth=bearer_oauth, params=params)
    print(response.status_code)
    if response.status_code != 200:
        raise Exception(
            "Request returned an error: {} {}".format(
                response.status_code, response.text
            )
        )
    return response.json()


def main():
    url = create_url()
    json_response = connect_to_endpoint(url,params)
    json_response = flatten(json_response)
    d = json.dumps(json_response, indent=4, sort_keys=True)
    return d
    
    
if __name__ == "__main__":
    main()

我收到此错误:

异常:请求返回错误:400 {"errors":[{"parameters":{"ids":["4919451, 14151086"]},"message":"`ids` 查询参数值 [14151086] 是无效"},{"parameters":{"user.fields":["name,description,location,public_metrics,username,created_at,"]},"message":"`user.fields` 查询参数值 [ ] 不是 [connection_status,created_at,description,entities,id,location,most_recent_tweet_id,name,pinned_tweet_id,profile_image_url,protected,public_metrics,receives_your_dm,subscription_type,url,用户名,verified,verified_type,withheld]"}],"标题之一":"请求无效","detail":"您请求的一个或多个参数无效。","type":"https://api.twitter.com/2/problems/invalid-request"}

你能帮我改进 connect_to_endpoint 函数使其正常工作吗? 提前感谢您的回答。

python twitter python-requests
1个回答
0
投票

根据您收到的错误消息,您需要更正您的请求数据。您传递的

ids
不是您可能认为的
list
,而是普通字符串
[id,id]
,因此应删除
[
]
字符。另外
user_fields
似乎包含太多
,
(在最后),这使得 API 期望另一个字段。由于没有任何内容,您会收到空的文件名错误。一旦改正,这个应该会让 API 更加满意:

params = {
    'ids': '4919451,14151086',
    'user.fields': 'name,description,location,public_metrics,username,created_at'
}
© www.soinside.com 2019 - 2024. All rights reserved.