From 10f264f2522c5d5f6bdf052f54a4a42ecff2f739 Mon Sep 17 00:00:00 2001 From: calvin wong <289016698@qq.com> Date: Thu, 12 Dec 2019 14:08:27 +0800 Subject: [PATCH] finish --- .../loginapi/controller/UserController.java | 9 +- .../top/weimumu/loginapi/entity/User.java | 11 +- login-api/src/main/resources/application.yml | 4 +- uni-app微信小程序登录.md | 313 ++++++++++++++++++ wx-login/pages/index/index.vue | 2 +- wx-login/pages/login/login.vue | 40 ++- .../mp-weixin/pages/login/login.js.map | 2 +- .../unpackage/dist/dev/mp-weixin/app.json | 3 +- .../dist/dev/mp-weixin/pages/index/index.wxml | 2 +- .../dist/dev/mp-weixin/pages/login/login.js | 41 ++- .../dist/dev/mp-weixin/project.config.json | 62 ++-- .../dist/dev/mp-weixin/sitemap37.json | 7 + 微信登录流程.jpg | Bin 26264 -> 0 bytes 13 files changed, 448 insertions(+), 48 deletions(-) create mode 100644 uni-app微信小程序登录.md create mode 100644 wx-login/unpackage/dist/dev/mp-weixin/sitemap37.json delete mode 100644 微信登录流程.jpg diff --git a/login-api/src/main/java/top/weimumu/loginapi/controller/UserController.java b/login-api/src/main/java/top/weimumu/loginapi/controller/UserController.java index 51c8109..e954bb8 100644 --- a/login-api/src/main/java/top/weimumu/loginapi/controller/UserController.java +++ b/login-api/src/main/java/top/weimumu/loginapi/controller/UserController.java @@ -36,19 +36,22 @@ public class UserController { String sessionKey = SessionKeyOpenId.getString("session_key"); User user = this.userMapper.selectById(openid); String skey = UUID.randomUUID().toString(); + System.out.println(openid); if(user == null){ String nickName = rawDataJson.getString("nickName"); String avatarUrl = rawDataJson.getString("avatarUrl"); user = new User(); - user.setOpenid(openid); + user.setOpenId(openid); user.setSkey(skey); user.setCreateTime(new Date()); user.setLastVisitTime(new Date()); user.setSession_key(sessionKey); - user.setAvatorUrl(avatarUrl); - user.setNickname(nickName); + user.setAvatarUrl(avatarUrl); + user.setNickName(nickName); + this.userMapper.insert(user); }else { // 已存在,更新用户登录时间 + user = new User(); user.setLastVisitTime(new Date()); // 重新设置会话skey user.setSkey(skey); diff --git a/login-api/src/main/java/top/weimumu/loginapi/entity/User.java b/login-api/src/main/java/top/weimumu/loginapi/entity/User.java index 7afcb54..8884375 100644 --- a/login-api/src/main/java/top/weimumu/loginapi/entity/User.java +++ b/login-api/src/main/java/top/weimumu/loginapi/entity/User.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -20,15 +21,15 @@ public class User { /** * openid */ - private String openid; + private String openId; /** * 用户头像 */ - private String avatorUrl; + private String avatarUrl; /** * 用户网名 */ - private String nickname; + private String nickName; /** * session_key */ @@ -41,13 +42,13 @@ public class User { * 创建时间 */ @TableField("create_time") - @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date createTime; /** * 最后登录时间 */ @TableField("last_visit_time") - @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date lastVisitTime; } diff --git a/login-api/src/main/resources/application.yml b/login-api/src/main/resources/application.yml index 91f8464..1fe12a3 100644 --- a/login-api/src/main/resources/application.yml +++ b/login-api/src/main/resources/application.yml @@ -3,7 +3,7 @@ server: port: 8080 spring: datasource: - url: jdbc:mysql://192.168.253.133:3307/test?useUnicode=true&useSSL=false&characterEndcoding=utf8&serverTimezon=Asia/Shanghai + url: jdbc:mysql://192.168.253.133:3307/test?useUnicode=true&useSSL=false&characterEndcoding=utf8&useTimezone=true&serverTimezone=Asia/Shanghai username: root password: 123456 - driver-class-name: com.mysql.cj.jdbc.Driver \ No newline at end of file + driver-class-name: com.mysql.cj.jdbc.Driver diff --git a/uni-app微信小程序登录.md b/uni-app微信小程序登录.md new file mode 100644 index 0000000..82c7c5b --- /dev/null +++ b/uni-app微信小程序登录.md @@ -0,0 +1,313 @@ +# uni-app微信小程序登录 + +## 第一章 前端页面 + +### 1.1 简介 + +前端使用uni-app + +后端springboot2.X+mybatis plus + +持久化数据库mysql8.0.16 + +![image](https://res.wx.qq.com/wxdoc/dist/assets/img/api-login.2fcc9f35.jpg) + +### 1.2 微信小程序登录步骤 + +第一步:小程序通过uni.login()获取code。 +第二步:小程序通过uni.request()发送code到开发者服务器。 +第三步:开发者服务器接收小程序发送的code,并携带appid、appsecret(这两个需要到微信小程序后台查看)、code发送到微信服务器。 +第四步:微信服务器接收开发者服务器发送的appid、appsecret、code进行校验。校验通过后向开发者服务器发送session_key、openid。 +第五步:开发者服务器自己生成一个key(自定义登录状态)与openid、session_key进行关联,并存到数据库中(mysql、redis等)。 +第六步:开发者服务器返回生成key(自定义登录状态)到小程序。 +第七步:小程序存储key(自定义登录状态)到本地。 + +### 1.3首页index + +``` + + + + + + +``` + + + +### 1.4 登录页面login + +``` + + + + + + +``` + + + +## 第二章 uni-app业务逻辑开发 + +### 2.1 vuex在uni-app中的使用 + +### 2.2 登录功能实现 + +## 第三章 数据库设计与运行 + +### 3.1 vmware使用docker安装mysql + +**docker安装mysql,远程访问** + +```text +//搜索mysql +docker search mysql +//选定版本,抓取镜像 +docker pull mysql:8.0 +//创建同步mysql的文件夹 +mkdir -p /data/mysql01 +//创建容器 +docker run --name mysql01 -p 3307:3306 -v /data/mysql01:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=zan123456 -d mysql:8.0 + + +--restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。 +--restart的参数说明 +always:无论容器的退出代码是什么,Docker都会自动重启该容器。 +on-failure:只有当容器的退出代码为非0值的时候才会自动重启。另外,该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker会尝试自动重启该容器,最多5次。 + +-v 容器内的 /var/lib/mysql 在宿主机上 /data/mysql01 做映射 +-e MYSQL_ROOT_PASSWORD 初始密码 +-p 将宿主机3306的端口映射到容器3306端口 +``` + +**error:如果启动失败,查看日志docker logs mysql01提示** + +chown: cannot read directory '/var/lib/mysql/': Permission denied + +容器中没有执行权限 //挂载外部数据卷时,无法启动容器, 报 chown: cannot read directory '/var/lib/mysql/': Permission denied 由$ docker logs [name] 查看得知 该原因为centOs7默认开启selinux安全模块,需要临时关闭该安全模块,或者添加目录到白名单 临时关闭selinux:su -c "setenforce 0" 重新开启selinux:su -c "setenforce 1" 添加selinux规则,将要挂载的目录添加到白名单: 示例:chcon -Rt svirt_sandbox_file_t /data/mysql01(我启动挂载的路径) + + + +**error:用navicat连接如果报错** + +![img](https://pic2.zhimg.com/80/v2-8bc25b3599b809c5787eebee4d70067d_hd.jpg)报错是因为加密算法变了 + +我们在docker里面改变加密算法 + +```text +mysql> grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION; +Query OK, 0 rows affected (0.01 sec) + +mysql> ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; +Query OK, 0 rows affected (0.11 sec) + +mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; +Query OK, 0 rows affected (0.11 sec) + +mysql> FLUSH PRIVILEGES; +Query OK, 0 rows affected (0.01 sec) +``` + +算法换成mysql_native_password即可 + +### 3.2 user数据表建立 + +配置application.yml + +``` +server: + port: 8080 +spring: + datasource: + url: jdbc:mysql://192.168.253.133:3307/test?useUnicode=true&useSSL=false&characterEndcoding=utf8&serverTimezon=Asia/Shanghai + username: root + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver +``` + +创建表格 + +``` +CREATE TABLE `user` ( + `open_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'open_id', + `skey` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'skey', + `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `last_visit_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间', + `session_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'session_key', + `avatar_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', + `nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '网名', + PRIMARY KEY (`open_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信用户信息' ; +``` + + + +## 第四章 springboot开发后端接口 + +/** + * @Description: 自定义响应数据结构 + * 这个类是提供给门户,ios,安卓,微信商城用的 + * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list) + * 其他自行处理 + * 200:表示成功 + * 500:表示错误,错误信息在msg字段中 + * 501:bean验证错误,不管多少个错误都以map形式返回 + * 502:拦截器拦截到用户token出错 + * 555:异常抛出信息 diff --git a/wx-login/pages/index/index.vue b/wx-login/pages/index/index.vue index abf857d..ba8f499 100644 --- a/wx-login/pages/index/index.vue +++ b/wx-login/pages/index/index.vue @@ -2,7 +2,7 @@ - {{ hasLogin ? userInfo.username || '未设置昵称' : '立即登录' }} + {{ hasLogin ? userInfo.nickName || '未设置昵称' : '立即登录' }} diff --git a/wx-login/pages/login/login.vue b/wx-login/pages/login/login.vue index d037519..5a2ba53 100644 --- a/wx-login/pages/login/login.vue +++ b/wx-login/pages/login/login.vue @@ -21,8 +21,44 @@ export default { const that = this; that.logining = true; let userInfo = e.detail.userInfo; - console.log(e.detail) - } + uni.login({ + provider:"weixin", + success:(login_res => { + let code = login_res.code; + uni.getUserInfo({ + success(info_res) { + console.log(info_res) + uni.request({ + url:'http://localhost:8080/wxlogin', + method:"POST", + header: { + 'content-type': 'application/x-www-form-urlencoded' + }, + data:{ + code : code, + rawData : info_res.rawData + }, + success(res) { + if(res.data.status == 200){ + that.$store.commit('login',userInfo); + // uni.setStorageSync("userInfo",userInfo); + // uni.setStorageSync("skey", res.data.data); + }else{ + console.log('服务器异常') + } + }, + fail(error) { + console.log(error) + } + }) + uni.hideLoading() + uni.navigateBack() + } + }) + + }) + }) + } } }; diff --git a/wx-login/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map b/wx-login/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map index ffe81f0..1525a8a 100644 --- a/wx-login/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map +++ b/wx-login/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///F:/demo/app/wx-login-uni/wx-login/main.js","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?7bb2","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?25d0","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?8841","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?cc07","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?5d69","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?9565"],"names":["createPage","Page","data","logining","onLoad","methods","wxLogin","e","that","userInfo","detail","console","log"],"mappings":";;;;;;;;;;kDAAA,wCAAmB;;AAEnB;AACA,4F;AACAA,UAAU,CAACC,cAAD,CAAV,C;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoF;AAC3B;AACL;AACc;;;AAGlE;AAC2J;AAC3J,gBAAgB,wKAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,gFAAM;AACR,EAAE,yFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACe,gF;;;;;;;;;;;;ACvCf;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAA23B,CAAgB,s4BAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;ACS/4B,gD,CATA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;eAIe,EACdC,IADc,kBACP,CACN,OAAO,EACNC,QAAQ,EAAE,KADJ,EAAP,CAGA,CALa,EAMdC,MANc,oBAML,CAAE,CANG;AAOdC,SAAO,EAAE;AACRC,WADQ,mBACAC,CADA,EACG;AACX,UAAMC,IAAI,GAAG,IAAb;AACAA,UAAI,CAACL,QAAL,GAAgB,IAAhB;AACA,UAAIM,QAAQ,GAAGF,CAAC,CAACG,MAAF,CAASD,QAAxB;AACAE,aAAO,CAACC,GAAR,CAAYL,CAAC,CAACG,MAAd;AACC,KANO,EAPK,E;;;;;;;;;;;;ACXf;AAAA;AAAA;AAAA;AAA88C,CAAgB,06CAAG,EAAC,C;;;;;;;;;;;ACAl+C,uC","file":"pages/login/login.js","sourcesContent":["import 'uni-pages';import '@dcloudio/uni-stat';\n\nimport Vue from 'vue' \nimport Page from './pages/login/login.vue'\ncreatePage(Page)","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=86960e10&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\runtime\\\\componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('86960e10', component.options)\n } else {\n api.reload('86960e10', component.options)\n }\n module.hot.accept(\"./login.vue?vue&type=template&id=86960e10&\", function () {\n api.rerender('86960e10', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue\"\nexport default component.exports","export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-hbuilderx\\\\packages\\\\webpack-uni-nvue-loader\\\\lib\\\\templateLoader.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--17-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\template.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=template&id=86960e10&\"","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--12-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\script.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--12-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\script.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=script&lang=js&\"","//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n\r\nimport { mapMutations } from 'vuex';\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tlogining: false\r\n\t\t};\r\n\t},\r\n\tonLoad() {},\r\n\tmethods: {\r\n\t\twxLogin(e) {\r\n\t\tconst that = this;\r\n\t\tthat.logining = true;\r\n\t\tlet userInfo = e.detail.userInfo;\r\n\t\tconsole.log(e.detail)\r\n\t\t}\t\r\n\t}\r\n};\r\n","import mod from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\css-loader\\\\index.js??ref--8-oneOf-1-2!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-3!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\sass-loader\\\\lib\\\\loader.js??ref--8-oneOf-1-4!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-5!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\css-loader\\\\index.js??ref--8-oneOf-1-2!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-3!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\sass-loader\\\\lib\\\\loader.js??ref--8-oneOf-1-4!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-5!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///F:/demo/app/wx-login-uni/wx-login/main.js","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?7bb2","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?25d0","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?8841","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?cc07","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?5d69","webpack:///F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue?9565"],"names":["createPage","Page","data","logining","onLoad","methods","wxLogin","e","that","userInfo","detail","uni","login","provider","success","login_res","code","getUserInfo","info_res","console","log","request","url","method","header","rawData","res","status","$store","commit","fail","error","hideLoading","navigateBack"],"mappings":";;;;;;;;;;kDAAA,wCAAmB;;AAEnB;AACA,4F;AACAA,UAAU,CAACC,cAAD,CAAV,C;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAoF;AAC3B;AACL;AACc;;;AAGlE;AAC2J;AAC3J,gBAAgB,wKAAU;AAC1B,EAAE,2EAAM;AACR,EAAE,gFAAM;AACR,EAAE,yFAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACe,gF;;;;;;;;;;;;ACvCf;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAA23B,CAAgB,s4BAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;ACS/4B,gD,CATA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;eAIe,EACdC,IADc,kBACP,CACN,OAAO,EACNC,QAAQ,EAAE,KADJ,EAAP,CAGA,CALa,EAMdC,MANc,oBAML,CAAE,CANG;AAOdC,SAAO,EAAE;AACRC,WADQ,mBACAC,CADA,EACG;AACX,UAAMC,IAAI,GAAG,IAAb;AACAA,UAAI,CAACL,QAAL,GAAgB,IAAhB;AACA,UAAIM,QAAQ,GAAGF,CAAC,CAACG,MAAF,CAASD,QAAxB;AACAE,SAAG,CAACC,KAAJ,CAAU;AACTC,gBAAQ,EAAC,QADA;AAETC,eAAO,EAAE,iBAAAC,SAAS,EAAI;AACrB,cAAIC,IAAI,GAAGD,SAAS,CAACC,IAArB;AACAL,aAAG,CAACM,WAAJ,CAAgB;AACfH,mBADe,mBACPI,QADO,EACG;AACjBC,qBAAO,CAACC,GAAR,CAAYF,QAAZ;AACAP,iBAAG,CAACU,OAAJ,CAAY;AACXC,mBAAG,EAAC,+BADO;AAEXC,sBAAM,EAAC,MAFI;AAGXC,sBAAM,EAAE;AACU,kCAAgB,mCAD1B,EAHG;;AAMXtB,oBAAI,EAAC;AACJc,sBAAI,EAAGA,IADH;AAEJS,yBAAO,EAAGP,QAAQ,CAACO,OAFf,EANM;;AAUXX,uBAVW,mBAUHY,GAVG,EAUE;AACZ,sBAAGA,GAAG,CAACxB,IAAJ,CAASyB,MAAT,IAAmB,GAAtB,EAA0B;AACzBnB,wBAAI,CAACoB,MAAL,CAAYC,MAAZ,CAAmB,OAAnB,EAA2BpB,QAA3B;AACA;AACA;AACA,mBAJD,MAIK;AACJU,2BAAO,CAACC,GAAR,CAAY,OAAZ;AACA;AACD,iBAlBU;AAmBXU,oBAnBW,gBAmBNC,KAnBM,EAmBC;AACXZ,yBAAO,CAACC,GAAR,CAAYW,KAAZ;AACA,iBArBU,EAAZ;;AAuBApB,iBAAG,CAACqB,WAAJ;AACArB,iBAAG,CAACsB,YAAJ;AACA,aA5Bc,EAAhB;;;AA+BA,SAnCQ,EAAV;;AAqCC,KA1CO,EAPK,E;;;;;;;;;;;;;ACXf;AAAA;AAAA;AAAA;AAA88C,CAAgB,06CAAG,EAAC,C;;;;;;;;;;;ACAl+C,uC","file":"pages/login/login.js","sourcesContent":["import 'uni-pages';import '@dcloudio/uni-stat';\n\nimport Vue from 'vue' \nimport Page from './pages/login/login.vue'\ncreatePage(Page)","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=86960e10&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\runtime\\\\componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!module.hot.data) {\n api.createRecord('86960e10', component.options)\n } else {\n api.reload('86960e10', component.options)\n }\n module.hot.accept(\"./login.vue?vue&type=template&id=86960e10&\", function () {\n api.rerender('86960e10', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"F:/demo/app/wx-login-uni/wx-login/pages/login/login.vue\"\nexport default component.exports","export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-hbuilderx\\\\packages\\\\webpack-uni-nvue-loader\\\\lib\\\\templateLoader.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--17-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\template.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=template&id=86960e10&\"","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--12-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\script.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--12-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\script.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=script&lang=js&\"","//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n//\r\n\r\nimport { mapMutations } from 'vuex';\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tlogining: false\r\n\t\t};\r\n\t},\r\n\tonLoad() {},\r\n\tmethods: {\r\n\t\twxLogin(e) {\r\n\t\tconst that = this;\r\n\t\tthat.logining = true;\r\n\t\tlet userInfo = e.detail.userInfo;\r\n\t\tuni.login({\r\n\t\t\tprovider:\"weixin\",\r\n\t\t\tsuccess:(login_res => {\r\n\t\t\t\tlet code = login_res.code;\r\n\t\t\t\tuni.getUserInfo({\r\n\t\t\t\t\tsuccess(info_res) {\r\n\t\t\t\t\t\tconsole.log(info_res)\r\n\t\t\t\t\t\tuni.request({\r\n\t\t\t\t\t\t\turl:'http://localhost:8080/wxlogin',\r\n\t\t\t\t\t\t\tmethod:\"POST\",\r\n\t\t\t\t\t\t\theader: {\r\n\t\t\t\t\t\t\t 'content-type': 'application/x-www-form-urlencoded'\r\n\t\t\t\t\t\t\t },\r\n\t\t\t\t\t\t\tdata:{\r\n\t\t\t\t\t\t\t\tcode : code,\r\n\t\t\t\t\t\t\t\trawData : info_res.rawData\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tsuccess(res) {\r\n\t\t\t\t\t\t\t\tif(res.data.status == 200){\r\n\t\t\t\t\t\t\t\t\tthat.$store.commit('login',userInfo);\r\n\t\t\t\t\t\t\t\t\t// uni.setStorageSync(\"userInfo\",userInfo);\r\n\t\t\t\t\t\t\t\t\t// uni.setStorageSync(\"skey\", res.data.data);\r\n\t\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\t\tconsole.log('服务器异常')\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tfail(error) {\r\n\t\t\t\t\t\t\t\tconsole.log(error)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tuni.hideLoading()\r\n\t\t\t\t\t\tuni.navigateBack()\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\r\n\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n};\r\n","import mod from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\css-loader\\\\index.js??ref--8-oneOf-1-2!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-3!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\sass-loader\\\\lib\\\\loader.js??ref--8-oneOf-1-4!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-5!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\mini-css-extract-plugin\\\\dist\\\\loader.js??ref--8-oneOf-1-0!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\css-loader\\\\index.js??ref--8-oneOf-1-2!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\loaders\\\\stylePostLoader.js!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\postcss-loader\\\\src\\\\index.js??ref--8-oneOf-1-3!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\sass-loader\\\\lib\\\\loader.js??ref--8-oneOf-1-4!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-preprocess-loader\\\\index.js??ref--8-oneOf-1-5!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\vue-loader\\\\lib\\\\index.js??vue-loader-options!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\vue-cli-plugin-uni\\\\packages\\\\webpack-custom-block-loader\\\\index.js??ref--0-1!E:\\\\HBuilderX.2.2.2.20190816.full\\\\HBuilderX\\\\plugins\\\\uniapp-cli\\\\node_modules\\\\@dcloudio\\\\webpack-uni-mp-loader\\\\lib\\\\style.js!./login.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin"],"sourceRoot":""} \ No newline at end of file diff --git a/wx-login/unpackage/dist/dev/mp-weixin/app.json b/wx-login/unpackage/dist/dev/mp-weixin/app.json index 1ae2e96..e434fef 100644 --- a/wx-login/unpackage/dist/dev/mp-weixin/app.json +++ b/wx-login/unpackage/dist/dev/mp-weixin/app.json @@ -10,5 +10,6 @@ "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" }, - "usingComponents": {} + "usingComponents": {}, + "sitemapLocation": "sitemap37.json" } \ No newline at end of file diff --git a/wx-login/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/wx-login/unpackage/dist/dev/mp-weixin/pages/index/index.wxml index 4b625f7..d95c92d 100644 --- a/wx-login/unpackage/dist/dev/mp-weixin/pages/index/index.wxml +++ b/wx-login/unpackage/dist/dev/mp-weixin/pages/index/index.wxml @@ -1 +1 @@ -{{hasLogin?userInfo.username||'未设置昵称':'立即登录'}} \ No newline at end of file +{{hasLogin?userInfo.nickName||'未设置昵称':'立即登录'}} \ No newline at end of file diff --git a/wx-login/unpackage/dist/dev/mp-weixin/pages/login/login.js b/wx-login/unpackage/dist/dev/mp-weixin/pages/login/login.js index d5339e3..9b45198 100644 --- a/wx-login/unpackage/dist/dev/mp-weixin/pages/login/login.js +++ b/wx-login/unpackage/dist/dev/mp-weixin/pages/login/login.js @@ -122,7 +122,7 @@ __webpack_require__.r(__webpack_exports__); /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; +/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0; @@ -145,8 +145,45 @@ var _default = { data: function data() {return { logining: false };}, onLoad: fu var that = this; that.logining = true; var userInfo = e.detail.userInfo; - console.log(e.detail); + uni.login({ + provider: "weixin", + success: function success(login_res) { + var code = login_res.code; + uni.getUserInfo({ + success: function success(info_res) { + console.log(info_res); + uni.request({ + url: 'http://localhost:8080/wxlogin', + method: "POST", + header: { + 'content-type': 'application/x-www-form-urlencoded' }, + + data: { + code: code, + rawData: info_res.rawData }, + + success: function success(res) { + if (res.data.status == 200) { + that.$store.commit('login', userInfo); + // uni.setStorageSync("userInfo",userInfo); + // uni.setStorageSync("skey", res.data.data); + } else { + console.log('服务器异常'); + } + }, + fail: function fail(error) { + console.log(error); + } }); + + uni.hideLoading(); + uni.navigateBack(); + } }); + + + } }); + } } };exports.default = _default; +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"])) /***/ }), diff --git a/wx-login/unpackage/dist/dev/mp-weixin/project.config.json b/wx-login/unpackage/dist/dev/mp-weixin/project.config.json index fe4716e..0b38f92 100644 --- a/wx-login/unpackage/dist/dev/mp-weixin/project.config.json +++ b/wx-login/unpackage/dist/dev/mp-weixin/project.config.json @@ -1,32 +1,34 @@ { - "description": "项目配置文件。", - "packOptions": { - "ignore": [] - }, - "setting": { - "urlCheck": false, - "es6": false - }, - "compileType": "miniprogram", - "libVersion": "2.9.2", - "appid": "wx62e0151eaf62eff7", - "projectname": "wx-login", - "condition": { - "search": { - "current": -1, - "list": [] - }, - "conversation": { - "current": -1, - "list": [] - }, - "game": { - "current": -1, - "list": [] - }, - "miniprogram": { - "current": -1, - "list": [] - } - } + "description": "项目配置文件。", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": false, + "es6": false + }, + "compileType": "miniprogram", + "libVersion": "2.9.2", + "appid": "wx62e0151eaf62eff7", + "projectname": "wx-login", + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "game": { + "current": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [] + } + } } \ No newline at end of file diff --git a/wx-login/unpackage/dist/dev/mp-weixin/sitemap37.json b/wx-login/unpackage/dist/dev/mp-weixin/sitemap37.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/wx-login/unpackage/dist/dev/mp-weixin/sitemap37.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/微信登录流程.jpg b/微信登录流程.jpg deleted file mode 100644 index 1ca249fbec8d6f88a490df12733e8e8d2867b5e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26264 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