如何解决如何使用Oauth2连接和使用facebook营销api
我正在尝试使用 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)
}
还有我的 Facebook 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 Marketing API SDK。
解决方法
你调用 use Marketing Api with huandu package 但你需要在 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。