【问题标题】:How use Oauth2 to connect and use facebook marketing api如何使用Oauth2连接和使用facebook营销api
【发布时间】:2021-05-08 05:35:03
【问题描述】:

我正在尝试使用 facebook Marketing API。

问题是我不知道如何执行请求

import (
    "context"
    "fmt"
    "log"
    "net/http"
    "os"
    fb "github.com/huandu/facebook"
    "github.com/joho/godotenv"
    "golang.org/x/oauth2"
 )

func main() {

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(200)
        _, _ = fmt.Fprintf(w, "Hello, World!")
    })
    http.HandleFunc("/use-fb", FBConnect)
    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
        log.Printf("Defaulting to port %s", port)
    }
    log.Println("Listening on port %s", port)
    log.Printf("Open http://localhost:%s in the browser", port)
} 

还有我的 Fb Connect 功能,

  func goDotEnvVariable(key string) string {

    // load .env file
    err := godotenv.Load(".env")

    if err != nil {
        log.Fatalf("Error loading .env file")
    }

    return os.Getenv(key)
}

    func FBConnect(w http.ResponseWriter, r *http.Request) {

    var (
        ClientID     = goDotEnvVariable("FB_APP_ID")
        ClientSecret = goDotEnvVariable("FB_KEY_SECRET")
        tokenApp     = goDotEnvVariable("FB_USER_TOKEN")
        //tokenUser = os.Getenv("Fb_user_app")
    )

    fbConfig := &oauth2.Config{

        ClientID:     goDotEnvVariable("FB_APP_ID"), // change this to yours
        ClientSecret: goDotEnvVariable("FB_KEY_SECRET"),
        RedirectURL:  "http://localhost:8080/use-fb", // change this to your webserver adddress
        Scopes:       []string{"email"},
        Endpoint: oauth2.Endpoint{
            AuthURL:  "https://www.facebook.com/dialog/oauth",
            TokenURL: "https://graph.facebook.com/oauth/access_token",
        },
    }
    url := fbConfig.AuthCodeURL("")
    fmt.Println("Config", url)
    var globalApp = fb.New(ClientID, ClientSecret)
    globalApp.EnableAppsecretProof = true
    session := globalApp.Session(tokenApp)
    err = session.Validate()
    fmt.Println(session.Get("/me", nil))

}

我不知道如何使用营销 API,因为我们在 Go 中只有一个 Facebook Graph API SDK,但没有 Facebook 营销 API SDK。

【问题讨论】:

  • 我关闭这个问题是因为一个 huandu 包调用了一个已弃用的 API(只是营销 API)

标签: facebook go oauth-2.0 facebook-access-token facebook-marketing-api


【解决方案1】:

你用 huandu 包调用使用 Marketing Api 但你需要在 session.go 中更改 getURL 功能

// facebook versioning.
    if session.Version == "" {
        if Version != "" {
            buf.WriteString(Version)
            buf.WriteRune('/')
        }
    } else {
        buf.WriteString(session.Version)
        buf.WriteRune('/')
    }

通过

buf.WriteString("v9.0")
    buf.WriteRune('/')

或者如果 facebook 更改版本

buf.WriteString("vx.x")
    buf.WriteRune('/')

或者当你调用你的 api 你写

session.Get("/v9.0/me", nil)

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多