forked from dghubble/gologin
/
verify.go
40 lines (33 loc) · 938 Bytes
/
verify.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package facebook
import (
"net/http"
"github.com/dghubble/sling"
)
const facebookAPI = "https://graph.facebook.com/v2.4/"
// User is a Facebook user.
//
// Note that user ids are unique to each app.
type User struct {
ID string `json:"id"`
Name string `json:"name"`
}
// client is a Facebook client for obtaining the current User.
type client struct {
c *http.Client
sling *sling.Sling
}
func newClient(httpClient *http.Client) *client {
base := sling.New().Client(httpClient).Base(facebookAPI)
return &client{
c: httpClient,
sling: base,
}
}
func (c *client) Me() (*User, *http.Response, error) {
user := new(User)
// Facebook returns JSON as Content-Type text/javascript :(
// Set Accept header to receive proper Content-Type application/json
// so Sling will decode into the struct
resp, err := c.sling.New().Set("Accept", "application/json").Get("me").ReceiveSuccess(user)
return user, resp, err
}