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

Bagaimana untuk tweet menggunakan Go menggunakan Twitter API v2?

WBOY
WBOYke hadapan
2024-02-08 22:30:091070semak imbas

如何使用 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>

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.

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam