PTGUoauth

package
v1.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 29, 2024 License: MIT Imports: 5 Imported by: 0

README

PTGU OAuth Facebook

Import

import (
	PTGUoauth "github.com/parinyapt/golang_utils/oauth/facebook/v1"
)

Example

Config OAuth
facebookOAuth := PTGUoauth.NewFacebookOAuth(&oauth2.Config{
  RedirectURL:  "URL_TO_REDIRECT_AFTER_LOGIN",
  ClientID:     "CLIENT_ID",
  ClientSecret: "CLIENT_SECRET",
  Scopes: []string{
    "email",
    "public_profile",
  },
  Endpoint: facebook.Endpoint,
})
Generate Login URL
loginURL := facebookOAuth.GenerateLoginURL("STATE")
Get User Access Token by Code
userAccessToken, err := facebookOAuth.GetUserAccessToken("CODE")
if err != nil {
  panic(err)
}
fmt.Println("User Access Token :", userAccessToken.AccessToken)
fmt.Println("User Access Token Expire in :", userAccessToken.ExpiresIn)
Get App Access Token
appAccessToken, err := favebookOAuth.GetAppAccessToken()
if err != nil {
  panic(err)
}
fmt.Println("App Access Token :", appAccessToken.AccessToken)
Get Token Info by Access Token
tokenInfo, err := favebookOAuth.GetTokenInfo(PTGUoauth.ParamFacebookGetTokenInfo{
  AppAccesstoken: "APP_ACCESS_TOKEN",
  UserAccessToken: "USER_ACCESS_TOKEN",
})
if err != nil {
  panic(err)
}
fmt.Println("User ID :", tokenInfo.Data.UserID)
fmt.Println("App ID :", tokenInfo.Data.AppID)
Get User Info by Access Token
userInfo, err := favebookOAuth.GetUserInfo("USER_ACCESS_TOKEN")
if err != nil {
  panic(err)
}
fmt.Println("User ID :", userInfo.ID)
fmt.Println("User Name :", *userInfo.Name)
fmt.Println("User Email :", *userInfo.Email)
fmt.Println("User Picture :", *userInfo.Picture.Data.URL)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFacebookOAuth

func NewFacebookOAuth(inputConfig *oauth2.Config) *facebookOAuthReceiverArgument

Types

type FacebookOAuthMethod

type FacebookOAuthMethod interface {
	// GenerateOAuthURL is a function to generate oauth url for user to login
	GenerateOAuthURL(state string) (oauthURL string)

	// GetAccessToken is a function to get user access token by code that response from facebook
	GetUserAccessToken(code string) (returnData ReturnFacebookGetUserAccessToken, err error)

	// GetAppAccessToken is a function to get app access token
	GetAppAccessToken() (returnData ReturnFacebookGetAppAccessToken, err error)

	// GetTokenInfo is a function to get token info from facebook server
	GetTokenInfo(param ParamFacebookGetTokenInfo) (returnData ReturnFacebookGetTokenInfo, err error)

	// GetUserInfo is a function to get user info from facebook server
	GetUserInfo(accessToken string) (returnData ReturnFacebookGetUserInfo, err error)
}

type ParamFacebookGetTokenInfo

type ParamFacebookGetTokenInfo struct {
	AppAccesstoken  string
	UserAccessToken string
}

type ReturnFacebookGetAppAccessToken

type ReturnFacebookGetAppAccessToken struct {
	AccessToken string `json:"access_token"`
	TokenType   string `json:"token_type"`
}

type ReturnFacebookGetTokenInfo

type ReturnFacebookGetTokenInfo struct {
	Data struct {
		AppID               string   `json:"app_id"`
		Type                string   `json:"type"`
		Application         string   `json:"application"`
		DataAccessExpiresAt int      `json:"data_access_expires_at"`
		ExpiresAt           int      `json:"expires_at"`
		IsValid             bool     `json:"is_valid"`
		IssuedAt            int      `json:"issued_at"`
		Scopes              []string `json:"scopes"`
		UserID              string   `json:"user_id"`
	} `json:"data"`
}

type ReturnFacebookGetUserAccessToken

type ReturnFacebookGetUserAccessToken struct {
	AccessToken string `json:"access_token"`
	TokenType   string `json:"token_type"`
	ExpiresIn   int    `json:"expires_in"`
}

type ReturnFacebookGetUserInfo

type ReturnFacebookGetUserInfo struct {
	ID      string  `json:"id"`
	Name    *string `json:"name"`
	Email   *string `json:"email"`
	Picture *struct {
		Data *struct {
			Height       *int    `json:"height"`
			IsSilhouette *bool   `json:"is_silhouette"`
			URL          *string `json:"url"`
			Width        *int    `json:"width"`
		} `json:"data"`
	} `json:"picture"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL