go + uniapp 通过 微信 code 获取 appid 等信息 无废话

编程入门 行业动态 更新时间:2024-10-22 11:09:43

go + uniapp 通过 微信 code 获取 appid 等信息 无<a href=https://www.elefans.com/category/jswz/34/1765815.html style=废话"/>

go + uniapp 通过 微信 code 获取 appid 等信息 无废话

go + uniapp 通过 微信 code 获取 appid 等信息 无废话

  • login.vue 通过 uni.login 获取 code
uni.login({"provider": "weixin","onlyAuthorize": true, // 微信登录仅请求授权认证success: (event) => {// 登录成功console.log(event);const {code} = event;// 向后端发送服务 获取 APPIDweixinLogin(code).then((res)=> {console.log(res);})}
})
  • weixinLogin 把 code 发送给后端
  • 请求 api/user.js
import request from '@/utils/request/index.js'; // 封装的request.js文件的位置// 微信登录获取 AppID
export const weixinLogin = (code) => {return request(`/api/user/wxlogin/${code}`, 'POST')
}
  • 封装的 utils/request.js
const url_all = {// 'DEV': 'http://localhost:9999', // 开发'DEV': 'http://192.168.137.33:9999', // 安卓模拟器 手机测试的局域网地址// 'PRO': 'http://111.111.111.111:8080', // 生产
}let BASEURL = url_all['DEV'] // 调整当前环境
/*
* 全局请求封装
* @param path 请求路径
* @param method 请求类型(GET/POST/DELETE等)
* @oaram data 请求体数据
* @param loading 请求未完成是是否显示加载中,默认为true
*/
export default (path, method, data = {}, loading = true) => {// 获取存储tokenconst token = uni.getStorageSync("token");if (loading) {uni.showLoading({title: "加载中",mask: true});};//根据token进行调用函数if (token != '') {return tokenRequest(path, method, data, loading, token)} else {return noTokenRequest(path, method, data, loading)}
};// 无token时发送请求函数
function noTokenRequest(path, method, data, loading) { return new Promise((resolve, reject) => {uni.request({url: BASEURL + path,method: method,data,success(response) {// console.log('%c响应拦截:', ' background:green', response);/* if (response.data.code === 3001) {// logout()} *//* if (response.data.code !== 20) {uni.showToast({icon: "none",duration: 4000,title: response.data.msg});} */// console.log(response.data)resolve(response.data);},fail(err) {uni.showToast({icon: "none",title: '服务响应失败'});console.error(err);reject(err);},complete() {uni.hideLoading();}});});
}// 有token时发送请求函数
function tokenRequest(path, method, data, loading,token) {return new Promise((resolve, reject) => {uni.request({url: BASEURL + path,method: method,data,header: {"token":  token},success(response) {// console.log('%c响应拦截:', ' background:green', response);if (response.data.code === 40101) {// logout()}// console.log(response.data)resolve(response.data);},fail(err) {uni.showToast({icon: "none",title: '服务响应失败'});console.error(err);reject(err);},complete() {uni.hideLoading();}});});
}
  • go -> GetWeiXinOpenID.go
func (db userDB) GetWeiXinOpenID(ctx *gin.Context) {code := ctx.Params.ByName("code")//小程序appidvar appid = "" //小程序id//小程序secretvar secret = "" //密钥//wx接口路径var url = ""data := make(map[string]string)data["appid"] = appiddata["secret"] = secretdata["js_code"] = codedata["grant_type"] = "authorization_code"request, err := http.NewRequest("GET", url, nil)if err != nil {panic(err)}query := request.URL.Query()query.Add("appid", appid)query.Add("secret", secret)query.Add("js_code", code)query.Add("grant_type", "authorization_code")var encode string = query.Encode()s := strings.Split(encode, "&")reData := make(map[string]string)for i := range s {reData[strings.Split(s[i], "=")[0]] = strings.Split(s[i], "=")[1]}println(reData)if encode != "" {response.Success(ctx, gin.H{"data": reData}, "SELECT SUCCESS")}
}
  • 封装的 response
package responseimport ("github/gin-gonic/gin""net/http"
)func Response(ctx *gin.Context, httpStatus int, code int, data gin.H, msg string) {ctx.JSON(httpStatus, gin.H{"code": code, "data": data, "msg": msg})
}func Success(ctx *gin.Context, data gin.H, msg string) {Response(ctx, http.StatusOK, 200, data, msg)
}
func File(ctx *gin.Context, data gin.H, msg string) {Response(ctx, http.StatusNotFound, 404, data, msg)
}
  • go -> router.go
userFun := userController.UserFunction()
userGroup := r.Group("api/user/")
userGroup.POST("/wxlogin/:code", userFun.GetWeiXinOpenID)
  • go -> mian.go
package mainimport ("github/gin-contrib/cors""github/gin-gonic/gin""github/spf13/viper""go-app/common""os"
)func main() {InitConfig()common.InitDB()r := gin.Default()config := cors.DefaultConfig()config.AllowAllOrigins = true                            //允许所有域名config.AllowMethods = []string{"GET", "POST", "OPTIONS"} //允许请求的方法config.AllowHeaders = []string{"token", "tus-resumable", "upload-length", "upload-metadata", "cache-control", "x-requested-with", "*"}r.Use(cors.New(config))// 定义路由和处理函数r = CollectRoute(r)port := viper.GetString("server.port")if port != "" {panic(r.Run(":" + port))}r.Run()
}func InitConfig() {workDir, _ := os.Getwd()viper.SetConfigName("application")viper.SetConfigType("yml")viper.AddConfigPath(workDir + "/config")err := viper.ReadInConfig()if err != nil {panic(err)}
}

更多推荐

go + uniapp 通过 微信 code 获取 appid 等信息 无废话

本文发布于:2023-12-07 13:53:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671364.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:废话   信息   uniapp   code   appid

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!