login.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import {
  2. imgServerUrl
  3. } from '../../config/config.js'
  4. import {
  5. getWxCode,
  6. hasAuth,
  7. getUserInfo
  8. } from '../../utils/wx.js'
  9. import {
  10. updataStorageData
  11. } from '../../utils/storage.js'
  12. import {
  13. wxLogin,
  14. saveLogin
  15. } from '../../services/wx.js'
  16. import {
  17. showToast
  18. } from '../../utils/tips.js'
  19. var app = getApp()
  20. Page({
  21. data: {
  22. canIUse: wx.canIUse('button.open-type.getUserInfo'),
  23. imgServerUrl: imgServerUrl,
  24. disabled: false,
  25. },
  26. onLoad: function() {
  27. },
  28. //用户授权
  29. bindGetUserInfo: function(e) {
  30. var self = this;
  31. if (!self.data.disabled) {
  32. self.setData({
  33. disabled: true
  34. })
  35. //检查登录态
  36. wx.checkSession({
  37. success() {
  38. //session_key 未过期,并且在本生命周期一直有效
  39. getWxCode().then(code => {
  40. return wxLogin({
  41. code: code
  42. })
  43. })
  44. .then(res => {
  45. console.log("dd", res)
  46. app.globalData.openId = res.data.openId ? res.data.openId : '';
  47. app.globalData.sessionKey = res.data.sessionKey ? res.data.sessionKey : '';
  48. })
  49. .then(data => {
  50. if (e.detail.userInfo) {
  51. return getUserInfo()
  52. } else {
  53. }
  54. })
  55. .then(res => {
  56. console.log("ddf", res)
  57. if (res) {
  58. wx.setStorageSync("userInfo", res.userInfo);
  59. saveLogin({
  60. encryptedData: encodeURIComponent(res.encryptedData),
  61. iv: encodeURIComponent(res.iv),
  62. openid: app.globalData.openId,
  63. session_key: app.globalData.sessionKey
  64. }).then(data => {
  65. console.log("save", data)
  66. wx.setStorageSync("hpuser", data.data.hpUser);
  67. wx.setStorageSync("hpMember", data.data.hpMember);
  68. wx.setStorageSync("user_id", data.data.hpUser.id);
  69. wx.setStorageSync("member_id", data.data.hpMember.id);
  70. wx.setStorageSync("user_token", data.data.hpUser.userToken);
  71. wx.setStorageSync("phone", data.data.hpUser.phone);
  72. // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
  73. // 所以此处加入 callback 以防止这种情况
  74. if (app.userInfoReadyCallback) {
  75. app.userInfoReadyCallback(res)
  76. }
  77. showToast("登录成功");
  78. setTimeout(function() {
  79. wx.navigateBack();
  80. }, 500)
  81. }).catch(data => {
  82. console.log("fgh", data)
  83. })
  84. }
  85. })
  86. },
  87. fail() {
  88. // session_key 已经失效,需要重新执行登录流程
  89. getWxCode().then(code => {
  90. return wxLogin({
  91. code: code
  92. })
  93. })
  94. .then(res => {
  95. console.log("dd", res)
  96. app.globalData.openId = res.data.openId ? res.data.openId : '';
  97. app.globalData.sessionKey = res.data.sessionKey ? res.data.sessionKey : '';
  98. })
  99. .then(data => {
  100. if (e.detail.userInfo) {
  101. return getUserInfo()
  102. } else {
  103. }
  104. })
  105. .then(res => {
  106. if (res) {
  107. wx.setStorageSync("userInfo", res.userInfo);
  108. saveLogin({
  109. encryptedData: encodeURIComponent(res.encryptedData),
  110. iv: encodeURIComponent(res.iv),
  111. openid: app.globalData.openId,
  112. session_key: app.globalData.sessionKey
  113. }).then(data => {
  114. console.log("save", data)
  115. wx.setStorageSync("hpuser", data.data.hpUser);
  116. wx.setStorageSync("hpMember", data.data.hpMember);
  117. wx.setStorageSync("user_id", data.data.hpUser.id);
  118. wx.setStorageSync("member_id", data.data.hpMember.id);
  119. wx.setStorageSync("user_token", data.data.hpUser.userToken);
  120. wx.setStorageSync("phone", data.data.hpUser.phone);
  121. // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
  122. // 所以此处加入 callback 以防止这种情况
  123. if (app.userInfoReadyCallback) {
  124. app.userInfoReadyCallback(res)
  125. }
  126. showToast("登录成功");
  127. setTimeout(function() {
  128. wx.navigateBack();
  129. }, 500)
  130. }).catch(data => {
  131. console.log("fgh", data)
  132. })
  133. }
  134. })
  135. }
  136. })
  137. }
  138. setTimeout(function () {
  139. self.setData({
  140. disabled: false
  141. })
  142. }, 1000)
  143. }
  144. })