教你如何写一个推特转发抽奖机器人——API v2
May 11th, 2022

之前看到很多教程都是基于推特v1 api,现在来填补市场空白,写一个v2 api的经验分享

(总体来说v1更简单好用 可是。。。。普通开发者账户只能使用v2 只有v1时代的老用户和申请到Elevated账号的人才可以使用v1 )

前提:

首先假设你已经有了一个开发者账号,点开你的App的 User authentication settings

选上 OAuth2.0 NativeApp(我也没发现有什么大区别 随时可以改)

下面的Callback URI 和 website URL 是必填项 如果有自己网站的可以填网站 如果你像我一样只是打算在自己电脑上跑 可以填 127.0.0.1就是本机地址 网站我乱填的 不影响

callback URI必须是https
callback URI必须是https

保存之后 记下Client ID 和 Client Secret 以后要用到

然后我们开始写自己的app, 首先 我们需要让用户(你的小号们)把账户授权给抽奖机器人

大概流程就是你的app产生一个链接 然后用户点击同意授权 这时候twitter就把用户的bearer token(用于操作用户账号 有效期只有2个小时 这就是为啥说v2比较麻烦。。。)和refresh token(如果授权了offline access 就可以用这个token来获取新的bearer token)给你 然后你就可以代替用户进行他所授权的行为了

我本地就是用flask 跑了一个简单的server,然后用一个叫TinyDB的本地DB(其实就是个json file)来记录账号的名字和对应的token 用tweepy来进行twitter的交互

第一步生成生成授权网址

产生的URL大概长这个样
产生的URL大概长这个样
点击授权
点击授权

点击授权后 twitter会自动给你的callback URL发一个GET request, 你把里面的token解析出来再存起来就完成第一步了!

后端解析token 并存到数据库里 这里的name是我自己加的用来区分小号的 不是url解析的一部分
后端解析token 并存到数据库里 这里的name是我自己加的用来区分小号的 不是url解析的一部分

现在我们开始进行关注,转发,抽奖!

我假设的使用情景是 我发现一个抽奖打算冲 就把这条抽奖推文的链接(简化为tweet id就是链接后面那串数字)发给机器人 然后他帮我和我的小兄弟们自动进行转发关注抽奖留言(全都是可选的)

(真实工作流程就是从数据库里把我选择的账户挨个进行操作 我这里就用一个举例子)

其中从推文中找的需要关注什么人 是用正则表达式看一下推文里都@了谁

然后还有一个关键问题就是这个bearToken的有效期只有2个小时 如果到期需要用refresh token再去request一个新的token,所以在进行操作的时候要用个try-catch, 如果登录出错 就在catch里面更新token 并更新数据库再重试

伪代码大概是这个样子

差不多就这样了 如果有问题欢迎提问!

哦 如果你是本地用flask的话 想使用https 可以看看这篇文章

Subscribe to RRRR
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from RRRR

Skeleton

Skeleton

Skeleton