deiwin / facebook

WIP - Facebook API wrapper in Go

Home Page:https://godoc.org/github.com/deiwin/facebook

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Facebook API wrapper in Go

GoDoc

This is a work in progress. It is currently used by deiwin/luncher-api and only implements the functionality needed by that project.

Tutorial

Configuration

Using $FACEBOOK_APP_SECRET and $FACEBOOK_APP_ID environment variables:

redirectURL := "http://your.domain.com/login/facebook/redirected"
scopes := []string{"manage_pages", "publish_actions", "whatever"}
facebookConfig := facebook.NewConfig(redirectURL, scopes)

However, if you wish, you can also manage your app secret and id differently:

facebookConfig := facebook.Config{
  AppID:       "your_app_id",
  AppSecret:   "your_app_secret",
  RedirectURL: "http://your.domain.com/login/facebook/redirected",
  Scopes:      []string{"manage_pages", "publish_actions", "whatever"},
}

Authentication

Redirecting users to Facebook for login

facebookAuthenticator := facebook.NewAuthenticator(facebookConfig)

// In an handler for the login request
session := "your_identifier_for_the_current_user_session"
redirectURL := facebookAuthenticator.AuthURL(session)
http.Redirect(w, r, redirectURL, http.StatusSeeOther)

Handling users redirected back from Facebook

// In an handler for the RedirectURL in the configuration.
// E.g "http://your.domain.com/login/facebook/redirected"
session := "your_identifier_for_the_current_user_session"
tok, err := facebookAuthenticator.Token(session, r)
if err != nil {
  if err == facebook.ErrMissingState {
    http.Error(w, "Expecting a 'state' value", http.StatusBadRequest)
  } else if err == facebook.ErrInvalidState {
    http.Error(w, "Invalid 'state' value", http.StatusForbidden)
  } else if err == facebook.ErrMissingCode {
    http.Error(w, "Expecting a 'code' value", http.StatusBadRequest)
  }
  http.Error(w, "", http.StatusInternalServerError)
}

Using the API

Receiving information about the current user

api := fb.auth.APIConnection(tok)
user, err := api.Me()
if err != nil {
  ...
}
return user.ID

See the GoDoc for the API for more options.

About

WIP - Facebook API wrapper in Go

https://godoc.org/github.com/deiwin/facebook

License:MIT License


Languages

Language:Go 100.0%