Maison  >  Article  >  développement back-end  >  Comment tweeter en utilisant Go en utilisant l'API Twitter v2 ?

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

WBOY
WBOYavant
2024-02-08 22:30:091068parcourir

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

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

}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer