Heim  >  Artikel  >  Backend-Entwicklung  >  Wie twittere ich mit Go und der Twitter API v2?

Wie twittere ich mit Go und der Twitter API v2?

WBOY
WBOYnach vorne
2024-02-08 22:30:091070Durchsuche

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

Im heutigen Zeitalter der sozialen Medien ist Twitter für viele Menschen zu einer wichtigen Plattform geworden, um zu kommunizieren, Informationen auszutauschen und zu erhalten. Die Verwendung der Twitter-API zum Twittern ist eine wichtige Fähigkeit für Entwickler. In diesem Artikel stellt Ihnen der PHP-Editor Youzi vor, wie Sie Twitter API v2 und die Go-Sprache zum Veröffentlichen von Tweets verwenden. Wenn Sie diese Techniken beherrschen, können Sie Inhalte flexibler auf Twitter veröffentlichen und mit mehr Benutzern interagieren. Finden wir es gemeinsam heraus!

Frageninhalt

Wie der Titel schon sagt, erhalte ich beim Versuch, mit Go zu twittern (ich habe ein kostenloses X/Twitter-Entwicklerkonto), die folgende Fehlermeldung:

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

Das ist mein aktueller 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)
    }

}

Ich habe einige Online-Ressourcen besucht, aber sie scheinen sich hauptsächlich auf Python-Beispiele zu konzentrieren, und ich suche nach Go-spezifischer Hilfe. Für Hinweise oder Vorschläge zur Lösung dieses Problems wären wir sehr dankbar.

Problemumgehung

Die von Ihnen verwendete Bibliothek go-twitter, verwendet die Twitter-API v1.1. Der kostenlose Plan hat keinen Zugriff auf diese API, weshalb die Fehlermeldung, die Sie erhalten, darauf zurückzuführen ist.

Informationen zu Bibliotheken, die v2 verwenden, finden Sie in der Dokumentation: https://developer.twitter.com/ en/docs/twitter-api/tools-and-libraries/v2#go

Das obige ist der detaillierte Inhalt vonWie twittere ich mit Go und der Twitter API v2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen