正如标题所示,当我尝试使用 Go 发布推文(我有免费的 X/Twitter 开发者帐户)时,我收到以下错误消息:
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]}
这是我当前的代码:
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
,uses the v1.1 twitter API 。免费计划无法访问此 API,这正是您收到的错误消息的内容。
... You currently have access to a subset of Twitter API v2 endpoints and limited v1.1 endpoints (e.g. media post, oauth) only. ...
对于使用 v2 的库,请查看文档: https://developer.twitter.com/en/docs/twitter-api/tools-and-libraries/v2#go
关于go - 如何使用 Twitter API v2 使用 Go 发布推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77614524/