wx-gz-authorize.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const req = require("./request.js");
  2. const api = require('./api.js');
  3. const utils = require('./util.js');
  4. // 微信公众号授权
  5. export function wxAuthorize(parentId, merchantId,scopeType) {
  6. // 非静默授权,第一次有弹框
  7. let local = window.location.href; // 获取页面url
  8. let appid = req.public.weixinGzAppid // 公众号appid
  9. let code = getUrlCode().code; // 截取code
  10. // 获取之前的code
  11. let oldCode = uni.getStorageSync('wechatCode')
  12. console.log('$$$$$$$$$$$$$$$$$wxAuthorize', local);
  13. //判断是否存在code,不存在或者过期将重新授权
  14. if (code == null || code === '' || code == 'undefined' || code == oldCode) {
  15. // 如果没有code,就去请求获取code
  16. console.log('$$$$$$$$$$$$$$$当前没有code,进入授权页面')
  17. //转码
  18. let uri = encodeURIComponent(local)
  19. // 设置旧的code为0,避免死循环
  20. uni.setStorageSync('wechatCode', 0)
  21. // snsapi_base 静默 snsapi_userinfo 非静默
  22. window.location.href =
  23. `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=${scopeType}&state=1&connect_redirect=1#wechat_redirect`
  24. } else {
  25. console.log('$$$$$$$$$$$$$$$$$$存在code,使用code换取用户信息,code====', code);
  26. // 保存最新code
  27. uni.setStorageSync('wechatCode', code);
  28. getWechatLogin(code, parentId, merchantId);
  29. // uni.request({
  30. // method: 'GET',
  31. // url: this.userUrl + '/sys/getOpenId', // 你的接口地址
  32. // data: {
  33. // code: code
  34. // },
  35. // success: res => {
  36. // console.log(res)
  37. // //根据后端返回的结果和需求自行修改,这里直接讲openid本地存储了
  38. // uni.setStorageSync('OPEN_ID', res.data.openid) //正式
  39. // },
  40. // fail: (err) => {
  41. // window.alert('请求失败')
  42. // console.log(err)
  43. // }
  44. // });
  45. }
  46. }
  47. function getWechatLogin(code, parentId, merchantId) {
  48. console.log('code>>>' + code + '//parentId>>>>>' + parentId + '//merchantId>>>' + merchantId);
  49. req.postRequest(api.wechat_loginV2, {
  50. code: code,
  51. parentId: parentId ? parentId : '',
  52. merchantId: merchantId ? merchantId : ''
  53. }, data => {
  54. if (data.token){
  55. req.setStorage('AUTH_TOKEN', data.token);
  56. }
  57. req.setStorage('userInfo', data);
  58. });
  59. }
  60. function getUrlCode() {
  61. // 截取url中的code方法
  62. var url = location.search;
  63. // this.winUrl = url;
  64. var theRequest = new Object();
  65. if (url.indexOf('?') != -1) {
  66. var str = url.substr(1);
  67. var strs = str.split('&');
  68. for (var i = 0; i < strs.length; i++) {
  69. theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
  70. }
  71. }
  72. return theRequest;
  73. }