Using Gin framework implementation OAuth 2.0 services
$ go get -u github.com/go-oauth2/gin-serverpackage main
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-oauth2/gin-server"
"gopkg.in/oauth2.v3/manage"
"gopkg.in/oauth2.v3/store"
)
func main() {
manager := manage.NewDefaultManager()
manager.MustTokenStorage(store.NewMemoryTokenStore())
manager.MapClientStorage(store.NewTestClientStore())
// Initialize the oauth2 service
server.InitServer(manager)
server.SetAllowGetAccessRequest(true)
g := gin.Default()
g.GET("/token", server.HandleTokenRequest)
api := g.Group("/api")
{
api.Use(server.TokenAuth(func(c *gin.Context) string {
return c.Query("access_token")
}))
api.GET("/test", func(c *gin.Context) {
ti, _ := c.Get("Token")
c.JSON(http.StatusOK, ti)
})
}
g.Run(":9096")
}$ go build server.go
$ ./serverhttp://localhost:9096/token?grant_type=client_credentials&client_id=1&client_secret=11&scope=read
{
"access_token": "ZF1M7NKDNWUUX2TCDIMZZG",
"expires_in": 7200,
"scope": "read",
"token_type": "Bearer"
}http://localhost:9096/api/test?access_token=ZF1M7NKDNWUUX2TCDIMZZG
Copyright (c) 2016 Lyric