40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/loveuer/nf"
|
|
"net/http"
|
|
)
|
|
|
|
func Authorize(c *nf.Ctx) error {
|
|
|
|
// 解析查询参数
|
|
clientID := c.Query("client_id")
|
|
responseType := c.Query("response_type")
|
|
redirectURI := c.Query("redirect_uri")
|
|
scope := c.Query("scope")
|
|
|
|
// 检查客户端 ID 和其他参数
|
|
// 在实际应用中,你需要检查这些参数是否合法
|
|
if clientID != "12345" || responseType != "code" || redirectURI != "http://localhost:8080/callback" {
|
|
return c.Status(http.StatusBadRequest).SendString("Invalid request")
|
|
}
|
|
|
|
// 显示授权页面给用户
|
|
_, err := c.Write([]byte(`
|
|
<html>
|
|
<head><title>Authorization</title></head>
|
|
<body>
|
|
<h1>Do you want to authorize this application?</h1>
|
|
<form action="/approve" method="post">
|
|
<input type="hidden" name="client_id" value="` + clientID + `"/>
|
|
<input type="hidden" name="redirect_uri" value="` + redirectURI + `"/>
|
|
<input type="hidden" name="scope" value="` + scope + `"/>
|
|
<button type="submit">Yes, I authorize</button>
|
|
</form>
|
|
</body>
|
|
</html>
|
|
`))
|
|
|
|
return err
|
|
}
|