Maison > développement back-end > Golang > le corps du texte

Comment tweeter en utilisant Go en utilisant l'API Twitter v2 ?

WBOY
Libérer: 2024-02-08 22:30:09
avant
1068 Les gens l'ont consulté

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

À l’ère actuelle des médias sociaux, Twitter est devenu une plateforme importante permettant à de nombreuses personnes de communiquer, de partager et d’obtenir des informations. Utiliser l'API Twitter pour tweeter est une compétence importante pour les développeurs. Dans cet article, l'éditeur PHP Youzi vous présentera comment utiliser l'API Twitter v2 et le langage Go pour publier des tweets. En maîtrisant ces techniques, vous pourrez publier du contenu sur Twitter de manière plus flexible et interagir avec plus d'utilisateurs. Découvrons-le ensemble !

Contenu de la question

Comme le titre l'indique, lorsque j'essaie de tweeter en utilisant Go (j'ai un compte de développeur X/Twitter gratuit), j'obtiens le message d'erreur suivant :

<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>
Copier après la connexion

Voici mon code actuel :

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

}
Copier après la connexion

J'ai visité quelques ressources en ligne, mais elles semblent se concentrer principalement sur des exemples Python et je recherche une aide spécifique à Go. Toute idée ou suggestion sur la façon de résoudre ce problème serait grandement appréciée.

Solution de contournement

La bibliothèque que vous utilisez, go-twitter, utilise l'API Twitter v1.1. Le forfait gratuit n'a pas accès à cette API, ce qui explique le message d'erreur que vous recevez.

Pour les bibliothèques utilisant la v2, consultez la documentation : https://developer.twitter.com/en/docs/twitter-api/tools-and-libraries/v2#go

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!