如何通过VBA获取公开Twitter推文的ResponseText?
用VBA获取公开Twitter推文JSON的解决方案(重点解决Bearer Token问题)
嘿,作为同样玩Excel和VBA的同行,我太懂你遇到的这个头疼问题了!你之前碰到的Forbidden和Rate limit exceeded错误,核心问题出在那个公开的Bearer Token上——那玩意儿是网页端临时用的,早就被Twitter限制得死死的,根本没法用来做稳定的API调用。咱们一步步来解决:
一、先搞懂为什么之前的Token不行
你用的那个公开Bearer Token是Twitter网页端给未登录用户临时分配的,它的权限极低、限流极严,而且随时可能失效。要正常调用Twitter API,必须用你自己的、通过开发者平台生成的App-only认证Bearer Token。
二、获取有效Bearer Token的正确步骤
这一步其实没你想象的复杂,免费就能搞定:
- 先去Twitter Developer Platform注册一个开发者账号(用普通Twitter账号就能注册,免费版完全够咱们测试获取公开推文的需求)
- 注册后创建一个新项目,然后在项目的「Keys and Tokens」页面里,找到「Bearer Token」选项,点击生成属于你自己的Token(这个Token是绑定你的项目的,权限和限流规则都是明明白白的)
- 记住:免费版的API有速率限制,比如每15分钟最多能调用15次,但用来测试完全足够了。
三、修改后的可用VBA代码
我给你调整了代码,适配现在的Twitter API v2规范,替换掉旧的端点和参数,关键是要把YOUR_OWN_BEARER_TOKEN_HERE换成你自己生成的Token:
Sub GetTwitterConversation() Dim MiHttp As Object Dim MiUrl As String Dim bearerToken As String ' 替换成你从Twitter Developer平台获取的专属Bearer Token bearerToken = "YOUR_OWN_BEARER_TOKEN_HERE" ' 推荐使用MSXML2.XMLHTTP.6.0版本,兼容性和稳定性更好 Set MiHttp = CreateObject("MSXML2.XMLHTTP.6.0") ' 现在Twitter API v2的对话获取端点,参数可以根据需求调整 MiUrl = "https://api.twitter.com/2/tweets/1273391252357201922/conversation?max_results=20&tweet.fields=author_id,created_at,public_metrics,full_text&expansions=author_id&user.fields=username,name" With MiHttp ' 同步调用,避免DoEvents带来的异步问题 .Open "GET", MiUrl, False ' 设置Authorization请求头,注意Bearer后面要有空格 .setRequestHeader "Authorization", "Bearer " & bearerToken .Send ' 先检查响应状态码,方便排查问题 If .Status = 200 Then Debug.Print "获取成功:" & vbCrLf & .responseText Else Debug.Print "请求失败,状态码:" & .Status & " - " & .StatusText Debug.Print "错误详情:" & .responseText End If End With MiHttp.abort Set MiHttp = Nothing End Sub
四、几个关键注意事项
- 绝对不要用网上随便搜的公开Bearer Token,要么失效要么直接触发限流,只有自己生成的才靠谱
- Twitter API v2的参数和旧版本不一样,比如用
max_results代替原来的count,用tweet.fields来指定要返回的字段(比如full_text能拿到完整推文内容),你可以根据自己的需求调整这些参数 - 如果还是遇到错误,去Twitter Developer后台的「API Analytics」里看调用日志,里面会有详细的错误原因,比返回的错误代码更直观
内容的提问来源于stack exchange,提问作者Foxfire And Burns And Burns
相关产品推荐
相关产品推荐

