当前位置: 首页 > 知识库问答 >
问题:

在python中,如何使用tweepy通过承载令牌访问推文?

汤承德
2023-03-14

当我注册Twitter API进行研究时,他们给了我3个密钥:API密钥、API密钥和承载令牌。然而,在Hello Tweepy示例中,使用了4个密钥:consumer_key、consumer_secret、access_token、access_token_secret。显然,前两个密钥相互映射,但我不知道consumer_secret和access_token如何映射到Bear token。我用的是:

CONSUMER_KEY = 'a'
CONSUMER_SECRET = 'b'
ACCESS_TOKEN = 'c'
ACCESS_TOKEN_SECRET = 'd'
BEARER_TOKEN='e'


# Set Connection
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)

我应该在哪里使用持票人代币?谢谢

共有3个答案

梅玉堂
2023-03-14

你不需要使用无记名密钥。你可以找到钥匙

巫马善
2023-03-14

不幸的是,此时您将无法使用Tweepy访问学术研究的新完整存档搜索endpoint。他们正在研究v2支持,但现在,你最终会遇到v1。1标准搜索API。

如果您使用的是Python,我建议您看看Twitter API v2示例代码,或者看看Twitter提供的search_tweets客户端。然后,您可以通过将承载令牌添加为环境变量来使用它,或者如果您愿意,可以直接将其添加到代码中,但如果这样做,请小心不要意外地将其提交给源代码管理,其他人可能会访问它。

要回答关于消费者密钥/秘密与访问令牌/秘密与承载令牌的问题:

  • 承载令牌基于消费者密钥和机密授予,仅代表应用程序身份和凭证

在Tweepy术语中,AppAuthHandler将自动检索承载令牌,在这种情况下,OAuthHandler将不被使用。

程卓君
2023-03-14

我认为混淆在于变量的不同术语以及这些变量的使用。

术语

下面首先解释术语说明,不同的术语指的是同一件事:

客户端凭据:

1. App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
2. App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === oauth_consumer_secret
3. Callback URL === oauth_callback
 

临时凭证:

1. Request Token === oauth_token
2. Request Token Secret === oauth_token_secret
3. oauth_verifier
 

令牌凭据:

1. Access token === Token === resulting oauth_token
2. Access token secret === Token Secret === resulting oauth_token_secret

接下来是这些的使用。请注意,承载令牌代表开发者应用对请求进行身份验证。由于此方法是特定于应用程序的,因此不涉及任何用户。因此,您可以在用户级别或应用程序级别处理请求,如下所示:

用户级别(OAuth 1.0a):

API key:"hgrthgy2374RTYFTY"
API key secret:"hGDR2Gyr6534tjkht"
Access token:"HYTHTYH65TYhtfhfgkt34"
Access token secret: "ged5654tHFG"

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(key, secret)
api = tweepy.API(auth)  

应用程序级别(OAuth 2.0):

Bearer token: "ABDsdfj56nhiugd5tkggred"
auth = tweepy.Client("Bearer Token here")
api = tweepy.API(auth)

或者:

auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
api = tweepy.API(auth)

[1] https://developer.twitter.com/en/docs/authentication/oauth-1-0a/obtaining-user-access-tokens

[2] https://docs.tweepy.org/en/latest/authentication.html#twitter-api-v2

 类似资料:
  • 我正在尝试调用我已被指示的API: 这需要一个授权头:承载访问令牌。 我有承载访问令牌,并尝试通过邮递员,并通过C#使用WebRequest,没有任何效果。 在Postman中,我将方法设置为GET,将授权设置为No Auth,在Headers选项卡上,我尝试添加一个标题,如下所示: 标头:“授权” 值:“我的令牌” 我也尝试过 标题:“Bearer”值:“mytoken” 也 标头:“授权” 值

  • 我有一个。NET应用程序,正在使用谷歌驱动器访问用户的文件。我能够获得授权代码,并且能够通过AccessToken和RefreshToken交换授权代码。问题是我无法刷新访问令牌,它在一小时后过期。 请指教。谢了。 请注意,使用此代码,我能够获得访问令牌。只是我希望这段代码在Google API中。

  • 我可以使用类似的代码和承载令牌进行GET,但似乎无法完成POST。 当我将Json、URL和承载令牌复制/粘贴到Postman中时,效果非常好。但从C#执行此操作时,会出现以下错误: “状态代码:400,原因短语:'错误请求',版本:1.1,内容:System.Net.Http.StreamContent,标题:{传输编码:分块连接:保持活动预期CT:最大年龄=604800,报告uri=”http

  • 假设我们使用OAuth承载令牌来保护API。有一个带有OWIN中间件的NuGet包可以为我们做到这一点:https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth. Everethig看起来很棒,直到提出访问令牌过期的问题——我们不想强迫用户一次又一次地重新登录。据我所知,有三种基本方法: 使访问令牌到期时间非常长(例如1个月) 使用O

  • 用户必须在浏览器和应用程序之间手动复制粘贴“授权码”,这在Android中不是一种实用的获取访问令牌的方法。 为了找到一种新的方法,我使用Android API中的来获取访问令牌,同时使用Java API中的和来获取文件列表,如下所示, 不幸的是,当调用中的时,应用程序总是由于NetworkOnMainThreadException而崩溃。 所以我的问题是,如何通过使用访问令牌而不是在中应用授权代