Web 端 QQ 登陆

概述

使用 thirdPartyLogin.WebQQLogin 相关工具函数,可以快速实现 Web 端 QQ 登陆功能。

示例代码

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))

	webQQLogin := thirdPartyLogin.WebQQLogin{
		AppId:       "******",
		AppKey:      "******",
		RedirectURI: "https://www.***.com/qqLogin/back",
		StatePrefix: "WebQQLogin",
	}

	// 跳转到QQ登录页面
	r.GET("/WebQQLogin", func(ctx *gin.Context) {
		session := sessions.Default(ctx)
		webQQLogin.Login(ctx, session)
	})
	// 授权登录后返回页面
	r.GET("/qqLogin/back", func(ctx *gin.Context) {
		session := sessions.Default(ctx)
		openUser, err := webQQLogin.GetUser(ctx, session)
		if err != nil {
			ctx.Writer.Write([]byte("登陆失败 [openUser],请返回重试 :("))
			return
		}
		fmt.Printf("openUser: %v\n", openUser)
		// 此处 openUser 已经获取登陆必备的 openid nickname 等相关数据,
		// 请根据自己项目的实际需求继续完善登陆功能 ...
	})

	// 监听指定端口
	r.Run(":80")

}