封装的api

    1. import { awaitWrap } from "./util"
    2. /**
    3. * 封装微信原生api->promise
    4. *
    5. * @class weixinModel
    6. */
    7. class weixinModel {
    8. constructor() {}
    9. // 获取图片信息
    10. getImageInfo(src) {
    11. return new Promise((resolve, reject) => {
    12. wx.getImageInfo({
    13. src: src,
    14. success: (result) => {
    15. resolve(result)
    16. },
    17. fail: (err) => {
    18. reject(err)
    19. },
    20. complete: () => {}
    21. })
    22. })
    23. }
    24. // 微信登录获取code
    25. getCode() {
    26. return awaitWrap(new Promise((resolve, reject) => {
    27. wx.login({
    28. timeout: 10000,
    29. success: (res) => {
    30. resolve(res.code)
    31. },
    32. fail: (err) => {
    33. reject(err)
    34. }
    35. })
    36. }))
    37. }
    38. // 用户授权登录
    39. getUserInfo() {
    40. return awaitWrap(new Promise((resolve, reject) => {
    41. wx.getUserInfo({
    42. lang: 'zh_CN',
    43. timeout: 10000,
    44. success: (data) => {
    45. console.log(data);
    46. resolve(data)
    47. },
    48. fail: (err) => {
    49. reject(false)
    50. }
    51. })
    52. }))
    53. }
    54. // 用户是否允许授权获取信息
    55. getSetting() {
    56. return awaitWrap(new Promise((resolve, reject) => {
    57. wx.getSetting({
    58. success: (data) => {
    59. if (data.authSetting['scope.userInfo']) {
    60. resolve(true)
    61. } else {
    62. reject(true)
    63. }
    64. }
    65. })
    66. }))
    67. }
    68. }
    69. let weixin = new weixinModel()
    70. export { weixinModel, weixin }
    1. 小程序授权

      1. <button open-type="getUserInfo" bind:getuserinfo="onGotUserInfo" class="authorizedBtn bg_editPhone_btn">确认授权</button>
    2. 判断用户是否允许授权获取信息

      1. let [setErr, setRes] = await weixin.getSetting()
      2. if (setErr) return wx.showToast({ title: '授权之后才能正常使用小程序', icon: 'none' });
    3. 获取code

      1. let [codeErr, code] = await weixin.getCode()
      2. if (codeErr) return wx.showToast({ title: '获取code失败', icon: 'none' });
    4. 获取用户信息

      1. let [userInfoErr, userInfo] = await weixin.getUserInfo()
      2. if (userInfoErr) return wx.showToast({ title: '获取授权用户信息失败', icon: 'none' });
    5. 通过code请求后台服务登录接口,获取token

    6. 通过token、用户信息,获取系统用户信息
    7. 获取手机号

      1. async getPhoneNumber(e) {
      2. console.log(e);
      3. if (!e.detail.encryptedData) return wx.showToast({ title: '请授权绑定手机号', icon: 'none' });
      4. let [codeErr, code] = await weixin.getCode()
      5. if (codeErr) return wx.showToast({ title: '获取code失败', icon: 'none' });
      6. console.log(e.detail.errMsg)
      7. console.log(e.detail.iv)
      8. console.log(e.detail.encryptedData)
      9. console.log(code);
      10. // todo:请求后台服务获取用户手机号
      11. }
    8. 通过获取手机号信息和code请求后台服务获取用户手机号