应使用 golang.org/x/oauth2 库,它由 go 团队维护、轻量稳定、专注授权码流转;需严格校验 state、精确匹配 redirecturl、安全存储 token、避免中间件滥用 oauth 流程。
OAuth 2.0客户端该用哪个库?别自己造轮子
Go 官方没有内置 OAuth 2.0 客户端,但 golang.org/x/oauth2 是事实标准,由 Go 团队维护,稳定、轻量、无第三方依赖。它不处理 HTTP 服务端逻辑,只专注授权码流转——这反而是优势:你清楚每一步在做什么,不会被封装过深的框架遮蔽关键细节。
常见错误是误用 oauth2.Config.Exchange 多次调用,或忽略 state 参数校验,导致 CSRF 漏洞。必须在发起授权请求前生成随机 state 并存入 session(如用 gorilla/sessions),回调时严格比对。
实操建议: