次のプログラムを go で書いてみました。
Facebook の Graph API で自分についての情報を得る
次のライブラリーを使います。
A Facebook Graph API SDK For Go.
ライブラリーをクローンします。
git clone https://github.com/huandu/facebook.git
get_me.go
// ---------------------------------------------------------------
//
// get_me.go
//
// Feb/22/2018
// ---------------------------------------------------------------
package main
import (
"fmt"
fb "../facebook"
)
// ---------------------------------------------------------------
func main() {
res, _ := fb.Get("/341584679598802", fb.Params{
"fields": "id,name,last_name,first_name,gender,name_format,timezone",
"access_token": "FG4EFFBgb938BAO2ouOc1235pjXC8YgsXZBYRnZB8nNvwZCP7dJDTXq7pRrZCVXDX4rmH9hvEZCUj8ZA2ihBlMKMoVWWwzaaRzI8tqA6zCAhgZB12idZCYxIxXNmC112GypCJlnsGdUgLLwAYp0PAQinfL3J123f6or2JYj65bt0QSp1umNabcfg",
})
fmt.Println("id:", res["id"])
fmt.Println("name:", res["name"])
fmt.Println("last_name:", res["last_name"])
fmt.Println("first_name:", res["first_name"])
fmt.Println("gender:", res["gender"])
fmt.Println("name_format:", res["name_format"])
fmt.Println("timezone:", res["timezone"])
}
// ---------------------------------------------------------------
Makefile
get_me: get_me.go
go build get_me.go
clean:
rm -f get_me
ファイルの配置です。
├── facebook
└── get_me
├── get_me.go
└── Makefile
facebook のライブラリーを使わない方法
get_me_http.go
// ---------------------------------------------------------------
//
// get_me_http.go
//
// Feb/22/2018
// ---------------------------------------------------------------
package main
import (
"io/ioutil"
"fmt"
"net/http"
"log"
"os"
"encoding/json"
)
// ---------------------------------------------------------------
func main() {
access_token := "FG4EFFBgb938BAO2ouOc1235pjXC8YgsXZBYRnZB8nNvwZCP7dJDTXq7pRrZCVXDX4rmH9hvEZCUj8ZA2ihBlMKMoVWWwzaaRzI8tqA6zCAhgZB12idZCYxIxXNmC112GypCJlnsGdUgLLwAYp0PAQinfL3J123f6or2JYj65bt0QSp1umNabcfg"
fields := "id,name,last_name,first_name,gender,name_format,timezone"
url := "https://graph.facebook.com/v2.12/me" + "?access_token=" + access_token + "&fields=" + fields
resp, err := http.Get (url)
if err != nil {
log.Fatalln(err)
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer resp.Body.Close()
contents, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
json_str := string(contents)
fmt.Printf("%s\n", json_str)
var data map[string]interface{}
if err := json.Unmarshal([]byte(json_str), &data); err != nil {
panic(err)
}
}
}
// ---------------------------------------------------------------
Makefile
get_me_http: get_me_http.go
go build get_me_http.go
clean:
rm -f get_me_http
実行方法
./get_me_http | jq .