概述
使用 thirdPartyLogin.WebWXLogin 相关函数工具可以快速完成 Web 端微信扫码登录功能;
使用代码
package main
import (
"fmt"
"github.com/cnlesscode/gotool/thirdPartyLogin"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// 开启 session
store := cookie.NewStore([]byte("pwd..."))
r.Use(sessions.Sessions("WESSESSION", store))
webWXLogin := thirdPartyLogin.WebWXLogin{
AppId: "******",
AppSecret: "******",
RedirectURI: "http://www.***.com/Login/WXBack",
StatePrefix: "WebWXLogin",
}
// 跳转到微信登录页面
r.GET("/WebWXLogin", func(ctx *gin.Context) {
session := sessions.Default(ctx)
webWXLogin.Login(ctx, session)
})
// 授权登录后返回页面
r.GET("/Login/WXBack", func(ctx *gin.Context) {
session := sessions.Default(ctx)
webWXUserInfo, err := webWXLogin.Back(ctx, session)
if err != nil {
println("登录失败 : " + err.Error())
} else {
fmt.Printf("res: %v\n", webWXUserInfo)
// 此处已经获取到用户的 openid、Unionid、HeadImgUrl 等数据
// 结构体格式如下 :
// type WebWXUserInfo struct {
// HeadImgUrl string `json:"headimgurl"`
// Openid string `json:"openid"`
// Unionid string `json:"unionid"`
// Nickname string `json:"nickname"`
// Errcode int `json:"errcode"`
// }
// 利用上面的数据配合数据库,继续完成后续的用户登陆逻辑即可
}
})
// 监听指定端口
r.Run(":80")
}