loginSchedule.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. const request = require('./WXHttpRequest.js');
  2. const url = require('./const.js');
  3. const util = require('./util.js');
  4. const HOST = url.apiUrl;
  5. const HOSTTwo = url.apiUrlTwo;
  6. function genAPIUrl(action) {
  7. return HOST + action;
  8. }
  9. // 登录
  10. function wxLogin(successcallback, failcallback) {
  11. wx.showToast({
  12. title: '登录中...',
  13. icon: 'loading',
  14. duration: 1500
  15. })
  16. wx.login({
  17. success: function(res) {
  18. if (res.code) {
  19. // 获取openid
  20. let url = genAPIUrl('wx/ucenter/openId')
  21. let data = { code: res.code }
  22. return request.getInstance().url(url).data(data).send().success(successcallback).fail(failcallback);
  23. } else {
  24. console.log('获取用户登录态失败!' + res.errMsg)
  25. }
  26. }
  27. })
  28. }
  29. // 获取原来的 openid 和 session_key
  30. function getOpenidSessionKey(successcallback, failcallback) {
  31. if (wx.getStorageSync('user')) {
  32. successcallback(
  33. wx.getStorageSync('user'),
  34. //分享小程序按钮
  35. wx.showShareMenu({
  36. withShareTicket: true
  37. })
  38. );
  39. return;
  40. }
  41. wxLogin(function(res) {
  42. //console.log('获取sessionKey等内容'+JSON.stringify(res.data));
  43. let sessionKey = JSON.parse(res.data).session_key;
  44. let openId = JSON.parse(res.data).openid;
  45. getLoginSchedule(sessionKey, openId, successcallback, failcallback, false);
  46. },function(res) {
  47. failcallback(res);
  48. })
  49. }
  50. // 获取另一个的 openid 和 session_key
  51. function getOpenidSessionKeyTwo(successcallback, failcallback) {
  52. if (wx.getStorageSync('userInfo')) {
  53. successcallback(
  54. wx.getStorageSync('userInfo'),
  55. //分享小程序按钮
  56. wx.showShareMenu({
  57. withShareTicket: true
  58. })
  59. );
  60. return;
  61. }
  62. wxLogin(function(res) {
  63. //console.log('获取sessionKey等内容'+JSON.stringify(res.data));
  64. let sessionKey = JSON.parse(res.data).session_key;
  65. let openId = JSON.parse(res.data).openid;
  66. getLoginSchedule(sessionKey, openId, successcallback, failcallback, true);
  67. },function(res) {
  68. failcallback(res);
  69. })
  70. }
  71. //登录
  72. function getLoginSchedule(sessionKey, openId, successcallback, failcallback, affirm) {
  73. wx.getSetting({
  74. success: function(res) {
  75. // 已经授权,可以直接调用 getUserInfo 获取头像昵称
  76. wx.getUserInfo({
  77. success: function (res) {
  78. let userInfo = res.userInfo;
  79. if(affirm) {
  80. let nickName = userInfo.nickName
  81. let avatarUrl = userInfo.avatarUrl
  82. let dataUrl = `openId=${openId}&nickName=${encodeURIComponent(nickName)}&avatar=${avatarUrl}`
  83. wx.request({
  84. url: `${HOSTTwo}wx/user`,
  85. data: dataUrl,
  86. method: 'POST',
  87. header: {
  88. 'content-type': 'application/x-www-form-urlencoded'
  89. },
  90. success: function(res) {
  91. console.log(res.data.data, '----注册返回----')
  92. wx.setStorageSync('userInfo', res.data.data)
  93. util.hideToast()
  94. util.showToast('登录中成功', true, 'success', 500)
  95. successcallback(res);
  96. },
  97. fail: function(res) {
  98. console.log(res, '----注册失败返回----')
  99. failcallback(res);
  100. }
  101. })
  102. }else {
  103. let url = genAPIUrl('wx/ucenter/user/loginRegist');
  104. const userData = {
  105. encryptedData: res.encryptedData,
  106. sessionKey: sessionKey,
  107. iv: res.iv,
  108. dist: '1133',
  109. headimgurl: userInfo.avatarUrl
  110. }
  111. request.getInstance().url(url).data(userData).method('GET').send().success(res => {
  112. wx.hideToast()
  113. wx.showToast({
  114. title: '登录成功',
  115. icon: 'success',
  116. duration: 1500
  117. })
  118. wx.setStorageSync('uid', res.data.data.uid)
  119. wx.setStorageSync('user', res)
  120. successcallback(res)
  121. });
  122. }
  123. },
  124. fail: function(res) {
  125. failcallback(res)
  126. }
  127. })
  128. }
  129. })
  130. }
  131. module.exports = {
  132. getOpenidSessionKey,
  133. getOpenidSessionKeyTwo
  134. }