Dalam era media sosial hari ini, Twitter telah menjadi platform penting bagi ramai orang untuk berkomunikasi, berkongsi dan mendapatkan maklumat. Menggunakan API Twitter untuk tweet adalah kemahiran penting untuk pembangun. Dalam artikel ini, editor PHP Youzi akan memperkenalkan kepada anda cara menggunakan Twitter API v2 dan bahasa Go untuk menerbitkan tweet. Dengan menguasai teknik ini, anda akan dapat menerbitkan kandungan di Twitter dengan lebih fleksibel dan berinteraksi dengan lebih ramai pengguna. Mari kita ketahui bersama!
Seperti tajuknya, apabila saya cuba tweet menggunakan Go (saya mempunyai akaun pembangun X/Twitter percuma) saya mendapat mesej ralat berikut:
<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>
Ini kod semasa saya:
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) } }
Saya telah melawat beberapa sumber dalam talian tetapi mereka nampaknya tertumpu kebanyakannya pada contoh Python dan saya sedang mencari bantuan khusus Go. Sebarang pandangan atau cadangan tentang cara menyelesaikan isu ini amat dihargai.
Perpustakaan yang anda gunakan, go-twitter
, menggunakan API twitter v1.1. Pelan percuma tidak mempunyai akses kepada API ini, itulah maksud mesej ralat yang anda terima.
Untuk perpustakaan yang menggunakan v2, lihat dokumentasi: https://developer.twitter.com/ en/docs/twitter-api/tools-and-libraries/v2#go
Atas ialah kandungan terperinci Bagaimana untuk tweet menggunakan Go menggunakan Twitter API v2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!