package main import ( "encoding/json" "github.com/SmallForest/sfwechat/jssdk" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.Use(Cors()) r.GET("/jssdk", func(c *gin.Context) { url := c.DefaultQuery("url", "url") jssdk := jssdk.New("xxx", "xxx", url) config := jssdk.GetWechatConfig() var configJSON map[string]interface{} err := json.Unmarshal([]byte(config), &configJSON) if err != nil { c.JSON(500, gin.H{ "status": 500, "message": "Error parsing JSON", }) return } c.JSON(200, gin.H{ "status": 200, "message": "ok", "data": configJSON, }) }) r.Run(":52446") } // Cors 开启跨域函数 func Cors() gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", "*") c.Writer.Header().Set("Access-Control-Expose-Headers", "Access-Control-Allow-Origin") c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT") if c.Request.Method == "OPTIONS" { c.AbortWithStatus(204) return } defer func() { if err := recover(); err != nil { } }() c.Next() } }
同时创建目录jssdk下的 ticket.txt 和 token.txt文件
这段代码是用于生成微信 JS-SDK 配置的,其中涉及到两个关键概念:token
和 ticket
。
-
token
(访问令牌):token
是一个用于调用微信 API 的访问令牌。在这段代码中,token
用于从微信服务器获取一个名为ticket
的特殊字符串。token
有一定的有效期,通常为7200秒(2小时)。当token
过期时,需要重新获取新的token
。在代码中,token
会被存储在一个名为token.txt
的文件中,以便在未过期时可以重复使用。 -
ticket
(临时票据):ticket
是一个用于生成 JS-SDK 配置的临时票据。它用于生成签名(signature),从而验证客户端页面对微信 JS-SDK 的合法使用。ticket
也具有有效期,通常为7200秒(2小时)。当ticket
过期时,需要使用新的token
来获取新的ticket
。在代码中,ticket
会被存储在一个名为ticket.txt
的文件中,以便在未过期时可以重复使用。
在这段代码中,token
和 ticket
的作用如下:
token
的主要作用是访问微信 API,用于获取ticket
。在这个过程中,token
会被用于访问微信服务器上的一个特定的 URL,该 URL 返回一个包含ticket
的响应。ticket
的主要作用是生成微信 JS-SDK 的配置,包括签名(signature)。使用ticket
、随机字符串(nonceStr)、时间戳(timestamp)和当前页面的 URL,代码会生成一个签名,这个签名用于验证页面对微信 JS-SDK 的合法使用。
总之,token
和 ticket
是用于生成微信 JS-SDK 配置的关键组成部分。token
用于访问微信 API 并获取 ticket
,而 ticket
用于生成 JS-SDK 配置,确保客户端对微信 JS-SDK 的合法使用。