关于oauth2网络介绍的已经很多了,咱简单的说说,如何go代码进行访问oauth2登录,详细的可以看源码嘛.
gitea文档网址:
https://docs.gitea.io/en-us/oauth2-provider/
授权端点 /login/oauth/authorize
访问令牌端点 /login/oauth/access_token
通过get请求
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE
得到验证的网址登录,同意之后,就拿到了访问令牌端点
https://github.com/drone/go-login 这里面的便是调用的源码,如何进行调用,设置为gitea,
gitea--> 用户-->设置-->应用--> 管理OAuth2应用程序-->输入应用名称-->重定向URL
获取到的 客户端ID clientID和客户端密钥 clientSecret
redirectURL 回调网址
var (
provider = flag.String("provider", "gitea", "")
providerURL = flag.String("provider-url", "", "")
clientID = flag.String("client-id", "533db180-04ee-47bb-ad59-a8e5f826015a", "")
clientSecret = flag.String("client-secret", "byPsZtxjTdQK6MUMqLXYuXeh9f0CiYazXXNcIBy8C_Q=", "")
consumerKey = flag.String("consumer-key", "", "")
consumerRsa = flag.String("consumer-private-key", "", "")
redirectURL = flag.String("redirect-url", "http://192.168.0.64:8080/login", "")
address = flag.String("address", ":8080", "")
dump = flag.Bool("dump", false, "")
help = flag.Bool("help", false, "")
)
func main() {
flag.Usage = usage
flag.Parse()
if *help {
flag.Usage()
os.Exit(0)
}
dumper := logger.DiscardDumper()
if *dump {
dumper = logger.StandardDumper()
}
var middleware login.Middleware
switch *provider {
case "gogs":
middleware = &gogs.Config{
Login: "/login/form",
Server: *providerURL,
}
case "gitea":
middleware = &gitea.Config{
ClientID: *clientID,
Server: "http://192.168.0.70:10080/",
ClientSecret: *clientSecret,
RedirectURL: *redirectURL,
}