FacebookAPI를 go 언어에서 호출

7171 단어 5Facebook
이 기사는 WACUL Advent Calendar의 22 일째입니다.

소개



Facebook의 API를 go 언어에서 다루고 싶습니다.
Facebook의 API는 Oauth 인증을 받아야합니다. 사용자 인증을 거쳐 토큰을 얻고 해당 토큰을 사용하여 API를 호출합니다.

아래 준비



적당히 Facebook 앱을 등록하고 앱 ID와 app secret을 삼가해 둡니다.
그런 다음 Reidirect URL에 http://localhost:8080를 등록합니다.



API 호출



다음 단계를 구현합니다.
  • 인증 페이지의 URL 표시
  • 콜백시 : 8080에서 서버 시작
  • 사용자가 URL을 복사하여 브라우저에 붙여 넣기
  • 인증시 localhost : 8080으로 콜백
  • 콜백 구현에서 매개 변수로 전달되는 코드에서 토큰으로 변환하고 토큰을 사용하여 API 호출

  • 소스 코드는 다음과 같습니다.
    package main
    
    import (
        "fmt"
        "log"
        "net/http"
    
        fb "github.com/huandu/facebook"
        "golang.org/x/oauth2"
        fbauth "golang.org/x/oauth2/facebook"
    )
    
    var conf *oauth2.Config
    
    func main() {
        conf = &oauth2.Config{
            ClientID:     "11111111111111",
            ClientSecret: "xxxxxxxxxxxxxxxxxxxxxxxxxx",
            Endpoint:     fbauth.Endpoint,
            RedirectURL:  "http://localhost:8080/",
        }
        //認証ページのURL
        url := conf.AuthCodeURL("")
        fmt.Println(url)
        fmt.Println("Please access the URL")
        //リダイレクトURLで指定したサーバを起動しておく
        http.HandleFunc("/", handler)
        http.ListenAndServe(":8080", nil)
    }
    
    func handler(w http.ResponseWriter, r *http.Request) {
        code := r.FormValue("code") //codeが返ってくるので取得
        //codeを使ってAccessTokenを取得する
        token, err := conf.Exchange(oauth2.NoContext, code)
        if err != nil {
            log.Fatal("exchange error", err.Error())
        }
        client := conf.Client(oauth2.NoContext, token)
    
        session := &fb.Session{
            Version:    "v2.8",
            HttpClient: client,
        }
    
        //APIを使って自身の情報を取得
        res, err := session.Get("/me?fields=id,name", nil)
        if err != nil {
            log.Fatal("api get error", err.Error())
        }
        fmt.Println(res["name"])  // your facebook name
    }
    
    

    이상으로 facebook API를 부를 수 있었습니다.

    좋은 웹페이지 즐겨찾기