gpt4 book ai didi

redirect - 如何在 golang 中向 google oauth 添加查询参数?

转载 作者:IT王子 更新时间:2023-10-29 02:14:43 24 4
gpt4 key购买 nike

在我的用例中,我必须向 google oauth 重定向 URL 添加一个查询参数。我正在添加一个查询参数,其键为 redirect。我正在尝试通过以下方式添加,

var (
googleRedirectURL = "http://127.0.0.1:8080/oauth-callback/google"
oauthCfg = &oauth2.Config{
ClientID: "XXXXXXXXXX",
ClientSecret: "XXXXXXXXXX",
Endpoint: google.Endpoint,
RedirectURL: "http://127.0.0.1:8080/oauth-callback/google",
Scopes: []string{"https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email"},
}
//random string for oauth2 API calls to protect against CSRF
googleOauthStateString = getUUID()
)

const profileInfoURL = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json"

func HandleGoogleLogin(w http.ResponseWriter, r *http.Request) {
redirect := strings.TrimSpace(r.FormValue("redirect"))
if redirect == "" {
httpErrorf(w, "HandleGoogleLogin() :: Missing redirect value for /login")
return
}
q := url.Values{
"redirect": {redirect},
}.Encode()

//params := '{"redirect": '+redirect+'}'
log.Printf("HandleGoogleLogin() :: redirect %s ", q)

//param := oauth2.SetAuthURLParam("redirect", q)
// url := oauthCfg.AuthCodeURL("state", param)

//append the redirect URL to the request
oauthCfg.RedirectURL = googleRedirectURL
url := oauthCfg.AuthCodeURL("state")
url = oauthCfg.AuthCodeURL(googleOauthStateString, oauth2.AccessTypeOnline)
url = url + "?redirct=" + q
http.Redirect(w, r, url, http.StatusTemporaryRedirect)
}

但这是将重定向参数附加到 url 的状态参数。因此,当我比较状态代码 oauthCfg.AuthCodeURL("state") 时,值不同。我的意思是以下检查。

state := r.FormValue("state")
log.Printf("HandleGoogleCallback() :: state string %s ", state)
if state != googleOauthStateString {
log.Printf("invalid oauth state, expected '%s', got '%s'\n", googleOauthStateString, state)
http.Redirect(w, r, "/", http.StatusTemporaryRedirect)
return
}

我可以使用 ? 分隔符拆分字符串以获取状态值。但我认为必须有一种标准方法可以在 google oauth 中添加查询参数以重定向 url。有人可以对此提出一些建议吗?

最佳答案

我认为你很接近。这对我有用:

hostDomainOption := oauth2.SetAuthURLParam("hd", "example.com")

authUrl := oAuthConfig.AuthCodeURL("state",
oauth2.AccessTypeOffline,
hostDomainOption)

我认为您可能被卡住的地方是注意到 AuthCodeURL方法是 variadic .

关于redirect - 如何在 golang 中向 google oauth 添加查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com