Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk tweet menggunakan Go menggunakan Twitter API v2?

Bagaimana untuk tweet menggunakan Go menggunakan Twitter API v2?

WBOY
Lepaskan: 2024-02-08 22:30:09
ke hadapan
1118 orang telah melayarinya

如何使用 Twitter API v2 使用 Go 发布推文?

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!

Kandungan soalan

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>
Salin selepas log masuk

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)
    }

}
Salin selepas log masuk

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.

Penyelesaian

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan