8 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
9 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
12// FacebookProvider represents an Facebook based Identity Provider
13type FacebookProvider struct {
17var _ Provider = (*FacebookProvider)(nil)
20 facebookProviderName = "Facebook"
21 facebookDefaultScope = "public_profile email"
25 // Default Login URL for Facebook.
26 // Pre-parsed URL of https://www.facebook.com/v2.5/dialog/oauth.
27 facebookDefaultLoginURL = &url.URL{
29 Host: "www.facebook.com",
30 Path: "/v2.5/dialog/oauth",
31 // ?granted_scopes=true
34 // Default Redeem URL for Facebook.
35 // Pre-parsed URL of https://graph.facebook.com/v2.5/oauth/access_token.
36 facebookDefaultRedeemURL = &url.URL{
38 Host: "graph.facebook.com",
39 Path: "/v2.5/oauth/access_token",
42 // Default Profile URL for Facebook.
43 // Pre-parsed URL of https://graph.facebook.com/v2.5/me.
44 facebookDefaultProfileURL = &url.URL{
46 Host: "graph.facebook.com",
51// NewFacebookProvider initiates a new FacebookProvider
52func NewFacebookProvider(p *ProviderData) *FacebookProvider {
53 p.setProviderDefaults(providerDefaults{
54 name: facebookProviderName,
55 loginURL: facebookDefaultLoginURL,
56 redeemURL: facebookDefaultRedeemURL,
57 profileURL: facebookDefaultProfileURL,
58 validateURL: facebookDefaultProfileURL,
59 scope: facebookDefaultScope,
61 p.getAuthorizationHeaderFunc = makeOIDCHeader
62 return &FacebookProvider{ProviderData: p}
65// GetEmailAddress returns the Account email address
66func (p *FacebookProvider) GetEmailAddress(ctx context.Context, s *sessions.SessionState) (string, error) {
67 if s.AccessToken == "" {
68 return "", errors.New("missing access token")
76 requestURL := p.ProfileURL.String() + "?fields=name,email"
77 err := requests.New(requestURL).
79 WithHeaders(makeOIDCHeader(s.AccessToken)).
87 return "", errors.New("no email")
92// ValidateSession validates the AccessToken
93func (p *FacebookProvider) ValidateSession(ctx context.Context, s *sessions.SessionState) bool {
94 return validateToken(ctx, p, s.AccessToken, makeOIDCHeader(s.AccessToken))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list