GolangでFacebook feedを取得するSDKを書いた

bot作りに精を出している今日このごろ、Facebookのfeedが更新されたら通知するbotを作ろうと思い、自分用のfeed取得SDKを作ったので使い方をまとめます。 今のところGetFeedという関数しかないです。

Install

どちらも自作になってしまいますが、以下2つをgo getします。

go get github.com/cipepser/bots
go get github.com/cipepser/httpclient/sdk

アクセストークンの設定

Feedを取得するためには、アクセストークンが必要です。そのためにfacebook for developersでappを作成してください。
curlでFacebook API叩くまでがわりとめんどかったのでメモ - DRYな備忘録を参考にさせて頂きました。

appを作成するとアクセストークンがここから確認できます。 以下の黒く塗り潰している箇所のApp Tokenです。

f:id:cipepser:20180103204427p:plain

App Tokenをコピーし、./token/facebook_api.jsonに以下のように設定してください。

{
  "access_token":"<YOUR APP TOKEN>"
}

これで準備は完了です。

How to Use

URLに取得したいfeedのURLを入力し、GetFeed(URL)を実行するだけです。


package main

import (
    "github.com/cipepser/bots/facebook"
)

func main() {
  URL := "https://graph.facebook.com/v2.11/<user name>/feed"

  f, err := facebook.GetFeed(URL)
  if err != nil {
    panic(err)
  }
  
  fmt.Println(f)

}

結果(上記f)は、facebookパッケージの中で定義している以下のFeed型で返ってくるので、必要なものを利用できます。

type Feed struct {
    Data []struct {
        CreatedTime string `json:"created_time"`
        Message     string `json:"message"`
        ID          string `json:"id"`
        Story       string `json:"story,omitempty"`
    } `json:"data"`
    Paging struct {
        Cursors struct {
            Before string `json:"before"`
            After  string `json:"after"`
        } `json:"cursors"`
        Next string `json:"next"`
    } `json:"paging"`
}

実装について

実装の中身はGithubにあげてあります。 access_tokenを埋め込んで、HTTPでGETするだけなので、応用しやすいです。

References