如何使用 Twitter API v2 使用 Go 发布推文?
在如今社交媒体的时代,Twitter已经成为了许多人交流、分享和获取信息的重要平台。对于开发者来说,使用Twitter API来发布推文是一项重要的技能。本文将由php小编柚子为您介绍如何使用Twitter API v2和Go语言来发布推文。通过掌握这些技巧,您将能够更灵活地在Twitter上发布内容,与更多的用户进行互动。让我们一起来了解吧!
问题内容
正如标题所示,当我尝试使用 Go 发布推文(我有免费的 X/Twitter 开发者帐户)时,我收到以下错误消息:
<code> 2023/12/06 21:56:24 twitter: 453 You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. If you need access to this endpoint, you may need a different access level. You can learn more here: https://developer.twitter.com/en/portal/product 2023/12/06/21:56:24 &{Status:403 Forbidden StatusCode:403 ... [truncated for brevity]} </code>
这是我当前的代码:
package main import ( // other imports "fmt" "github.com/joho/godotenv" "log" "os" "github.com/dghubble/go-twitter/twitter" "github.com/dghubble/oauth1" ) type Credentials struct { ConsumerKey string ConsumerSecret string AccessToken string AccessTokenSecret string } func getClient(creds *Credentials) (*twitter.Client, error) { config := oauth1.NewConfig(creds.ConsumerKey, creds.ConsumerSecret) token := oauth1.NewToken(creds.AccessToken, creds.AccessTokenSecret) httpClient := config.Client(oauth1.NoContext, token) client := twitter.NewClient(httpClient) verifyParams := &twitter.AccountVerifyParams{ SkipStatus: twitter.Bool(true), IncludeEmail: twitter.Bool(true), } user, _, err := client.Accounts.VerifyCredentials(verifyParams) if err != nil { return nil, err } log.Printf("User's ACCOUNT:\n%+v\n", user) return client, nil } func init() { if err := godotenv.Load(); err != nil { log.Fatal("Error loading .env file") } } func main() { creds := Credentials{ AccessToken: os.Getenv("ACCESS_TOKEN"), AccessTokenSecret: os.Getenv("ACCESS_TOKEN_SECRET"), ConsumerKey: os.Getenv("CONSUMER_KEY"), ConsumerSecret: os.Getenv("CONSUMER_SECRET"), } { // some code here... client, err := getClient(&creds) if err != nil { log.Println("Error getting Twitter Client, this is expected if you did not supply your Twitter API tokens") log.Println(err) } message := "Hello World" tweet, resp, err := client.Statuses.Update(message, nil) if err != nil { log.Println(err) } log.Printf("%+v\n", resp) log.Printf("%+v\n", tweet) } }
我访问了一些在线资源,但似乎主要集中在 Python 示例上,我正在寻找特定于 Go 的帮助。任何有关解决此问题的见解或建议将不胜感激。
解决方法
您正在使用的库,go-twitter
,使用 v1.1 twitter API。免费计划无法访问此 API,这正是您收到的错误消息的内容。
对于使用 v2 的库,请查看文档: https://developer.twitter.com/ en/docs/twitter-api/tools-and-libraries/v2#go
以上是如何使用 Twitter API v2 使用 Go 发布推文?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

Go语言中哪些库是大公司开发或知名开源项目?在使用Go语言进行编程时,开发者常常会遇到一些常见的需求,�...

Go语言中结构体定义的两种方式:var与type关键字的差异Go语言在定义结构体时,经常会看到两种不同的写法:一�...

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

Go语言中字符串打印的区别:使用Println与string()函数的效果差异在Go...

Go指针语法及viper库使用中的寻址问题在使用Go语言进行编程时,理解指针的语法和使用方法至关重要,尤其是在...

为什么Go语言中的map迭代会导致所有值变成最后一个元素?在Go语言中,面对一些面试题时,经常会遇到关于map�...
