uniapp+node.js(express框架)获取微信小程序的openid

简介: uniapp+node.js(express框架)获取微信小程序的openid

前端代码:

<template>
        <view class='other'>
            <view class='other-item' @tap='loginOther()'>
                <button>微信登录</button>
                <view></view>
            </view>
        </view>
</template>
<script>
  // 这里是引入请求本地的ip地址
import $http from '@/common/api/request.js'
export default{
    methods:{
        loginOther(){
            uni.login({
                success:(res)=>{
          let code=res.code;
          $http.request({
              url:"/login",
              method:"POST",
              data:{
                code
              },
          }).then((res)=>{
              console.log(res)
          }).catch(()=>{
              uni.showToast({
                  title:'请求失败',
                  icon:'none'
              })
          })
                }
            })
        }
    }
}
</script>
<style scoped>
</style>
请求代码(request.js):
export default{
    common:{//默认数据格式
        baseUrl:"http://本地ip地址或者你的服务器ip地址或者你服务器的域名:3000/api",
        data:{},
        header:{
            "Content-Type":"application/json",
            "Content-Type":"application/x-www-form-urlencoded"
        },
        method:"GET",
        dataType:"json"
    },
    request( options={} ){//options是默认值
        //这里是进行设置加载中给数据进行缓存一下
        uni.showLoading({
            title: '加载中'
        });
        options.url = this.common.baseUrl + options.url;
        options.data =     options.data || this.common.data;
        options.method = options.method || this.common.method;
        options.dataType =     options.dataType || this.common.dataType;
    return new Promise((res,rej)=>{
            uni.request({
                ...options,
                success: (result) => {
                    if(result.statusCode != 200){//处理其他接口没有数据而出现404报错的问题
                        return rej();
                    }
                    setTimeout(function () {
                        uni.hideLoading();
                    }, 0);//这是设置加载数据的显示时间
                    let data = result.data.data;
                    res(data);
                }
            })
        })
    }
}
后端node.js代码(express框架)
var express = require('express');
var router = express.Router();
//要记得下载这个包,npm install request
const request = require('request')
router.post('/api/login', function(req, res, next) {
  let code=req.body.code;//登陆传过来的code
 let appid = "自己的"; //自己小程序后台管理的appid,可登录小程序后台查看
 let mysecret = "自己的"; //小程序后台管理的secret,可登录小程序后台查看
 let grant_type = "authorization_code"; // 授权(必填)默认值
 //拼接出请求微信服务器的url地址然后请求oppenid和session_key
  let url ='https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + mysecret + '&js_code=' + code + '&grant_type=authorization_code';
      request(url,(error, response, body)=>{
        //JSON.parse()方法将JSON格式字符串转换为js对象
        let parsData = JSON.parse(body.toString());
        let openid=parsData.openid;
        let session_key=parsData.session_key;
        //返回前端是下面这个被注释的
        // res.send({
        //   data:parsData
        // })    
         })
})

module.exports = router;

这样子是可以完全请求出微信小程序的openid,目前我这样子做是有效的


相关文章
|
6月前
|
人工智能 小程序 安全
小程序跨平台框架未来的发展趋势是什么?
小程序跨平台框架未来的发展趋势是什么?
440 128
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
689 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
12月前
|
JavaScript 前端开发 API
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
4136 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
Web App开发 JSON JavaScript
Node.js 中的中间件机制与 Express 应用
Node.js 中的中间件机制与 Express 应用
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
下一篇
开通oss服务