API 从 twitter 调用 (python) returns 未经授权的错误,但适用于 Postman
API call (python) from twitter returns Unauthorized error but works on Postman
我最近尝试使用邮递员获取 organic metrics
的推文。我试用postman成功了,我用的是Oauth 1.0
授权。从这个例子中,我为 API 请求提取了 python 语法。
示例代码如下:
import requests
url = "https://api.twitter.com/2/tweets/123456789?tweet.fields=non_public_metrics,organic_metrics"
payload={}
headers = {
'Authorization': 'OAuth oauth_consumer_key="xxxxxxxxxx",oauth_token="xxxxxxxxxx",oauth_signature_method="HMAC-SHA1",oauth_timestamp="123432343",oauth_nonce="abcdefgh",oauth_version="1.0",oauth_signature="xxxxxxx"'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
但是,当我尝试 运行 作为一个独立的 python 脚本时,它 returns unauthorized error
通过邮递员它工作。请问这种行为的原因是什么?
错误:
{
"title": "Unauthorized",
"type": "about:blank",
"status": 401,
"detail": "Unauthorized"
}
期待建议!谢谢。
要在 Twitter API 上使用用户上下文,请使用 requests_oauthlib
class。
您可以在下面的 python:
中找到一个简单的实现
consumer_key = "xxxxxxxx"
consumer_secret = "xxxxxxxxx"
access_token = "xxxxxxxxxxx"
access_token_secret = "xxxxxxxxxxxx"
from requests_oauthlib import OAuth1Session
params = {"ids": "123234343"}
oauth = OAuth1Session(
consumer_key,
client_secret=consumer_secret,
resource_owner_key=access_token,
resource_owner_secret=access_token_secret,
)
response = oauth.get(
"https://api.twitter.com/2/tweets", params=params
)
此实施要求您拥有所有关键参数,如 consumer key
、consumer secret
、access_token
和 access token secret
。请访问你的 Twitter 开发页面以生成所有值(如果你不确定你可以按照他们的文档 https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret )
谢谢,希望对大家有帮助!
我最近尝试使用邮递员获取 organic metrics
的推文。我试用postman成功了,我用的是Oauth 1.0
授权。从这个例子中,我为 API 请求提取了 python 语法。
示例代码如下:
import requests
url = "https://api.twitter.com/2/tweets/123456789?tweet.fields=non_public_metrics,organic_metrics"
payload={}
headers = {
'Authorization': 'OAuth oauth_consumer_key="xxxxxxxxxx",oauth_token="xxxxxxxxxx",oauth_signature_method="HMAC-SHA1",oauth_timestamp="123432343",oauth_nonce="abcdefgh",oauth_version="1.0",oauth_signature="xxxxxxx"'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
但是,当我尝试 运行 作为一个独立的 python 脚本时,它 returns unauthorized error
通过邮递员它工作。请问这种行为的原因是什么?
错误:
{
"title": "Unauthorized",
"type": "about:blank",
"status": 401,
"detail": "Unauthorized"
}
期待建议!谢谢。
要在 Twitter API 上使用用户上下文,请使用 requests_oauthlib
class。
您可以在下面的 python:
consumer_key = "xxxxxxxx"
consumer_secret = "xxxxxxxxx"
access_token = "xxxxxxxxxxx"
access_token_secret = "xxxxxxxxxxxx"
from requests_oauthlib import OAuth1Session
params = {"ids": "123234343"}
oauth = OAuth1Session(
consumer_key,
client_secret=consumer_secret,
resource_owner_key=access_token,
resource_owner_secret=access_token_secret,
)
response = oauth.get(
"https://api.twitter.com/2/tweets", params=params
)
此实施要求您拥有所有关键参数,如 consumer key
、consumer secret
、access_token
和 access token secret
。请访问你的 Twitter 开发页面以生成所有值(如果你不确定你可以按照他们的文档 https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret )
谢谢,希望对大家有帮助!