首頁  >  文章  >  後端開發  >  如何使用 Twitter API v2 使用 Go 發布推文?

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

WBOY
WBOY轉載
2024-02-08 22:30:091068瀏覽

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

在現今社群媒體的時代,Twitter已經成為了許多人交流、分享和獲取資訊的重要平台。對於開發者來說,使用Twitter API來發布推文是一項重要的技能。本文將由php小編柚子為您介紹如何使用Twitter API v2和Go語言來發布推文。透過掌握這些技巧,您將能夠更靈活地在Twitter上發佈內容,與更多的用戶互動。讓我們一起來了解吧!

問題內容

如標題所示,當我嘗試使用Go 發布推文(我有免費的X/Twitter 開發者帳戶)時,我收到以下錯誤訊息:

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

這是我目前的程式碼:

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

}

我訪問了一些線上資源,但似乎主要集中在 Python 範例上,我正在尋找特定於 Go 的幫助。任何有關解決此問題的見解或建議將不勝感激。

解決方法

您正在使用的函式庫,go-twitter使用 v1.1 twitter API。免費方案無法存取此 API,這正是您收到的錯誤訊息的內容。

對於使用 v2 的庫,請查看文件: https://developer.twitter.com/ en/docs/twitter-api/tools-and-libraries/v2#go

以上是如何使用 Twitter API v2 使用 Go 發布推文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除