wx.getUserInfo不支持的解決方案


之前wx.getUserInfo寫在app.js中,為了盡量減少影響,加了一個登錄授權頁面tologin

wx.login({
        success: function (r) {
          var code = r.code;//登錄憑證         
          if (code) { 
            //2、調用獲取用戶信息接口
            wx.getUserInfo({
              success: function (res) {
                //console.log("小程序res")
                //console.log(res)
                var userInfo = res.userInfo;
                //console.log("用戶信息")
                //console.log(userInfo)
                var timeStamp = Date.parse(new Date()) / 1000;
                var nickName = userInfo.nickName;
                var gender = userInfo.gender;
                var avatarUrl = userInfo.avatarUrl;
                var country = userInfo.country;
                var province = userInfo.province;
                var city = userInfo.city;
                var param = { code: code, nickname: nickName, logo: avatarUrl}                
                var paramsToSign = "appId=101605&param=" + JSON.stringify(param) + "&version=1.0.0&timeStamp=" + timeStamp +"&key=b0bb9ac9bfcfd46d3ec19acb63118e9b";
                var sign = md5(paramsToSign).toLocaleUpperCase();
                //3.請求自己的服務器,解密用戶信息 獲取unionId等加密信息
                wx.request({
                  url: app.globalData.openUrl + 'api/register/wechatLogin',//自己的服務接口地址
                  method: 'post',
                  header: {
                    'content-type': 'application/x-www-form-urlencoded'
                  },
                  data: { appId: "101605", version: "1.0.0", timeStamp: timeStamp, param: JSON.stringify(param),sign: sign},
                  success: function (d) {
                    //console.log("服務器解析后返回的信息")
                    //console.log(d)
                    //4.解密成功后 獲取自己服務器返回的結果
                    if (d.data.code == "000") {
                      var userInfoToStorage = d.data.data;
                      wx.setStorageSync('unionid', userInfoToStorage.unionid);
                      wx.setStorageSync('openid', userInfoToStorage.openid);
                      wx.setStorageSync("token", userInfoToStorage.token);
                      if (gender == "0"){
                        wx.setStorageSync('gender', "女");
                      }else{
                        wx.setStorageSync('gender', "男");
                      }
                      wx.setStorageSync('nickName', nickName);
                      wx.setStorageSync('city', city);
                      wx.setStorageSync('avatarUrl', avatarUrl);
                                                            
                    } else {
                      console.log('解密失敗');
                    }
                  },
                  fail: function () {
                    console.log('系統錯誤')
                  }
                })
              },
              fail: function () {
                console.log('獲取用戶信息失敗')
                //獲取用戶信息失敗后。請跳轉授權頁面
                wx.showModal({
                  title: '警告',
                  content: '尚未進行授權,請點擊確定跳轉到授權頁面進行授權。',
                  success: function (res) {
                    if (res.confirm) {
                      console.log('用戶點擊確定')
                      wx.navigateTo({
                        url: '../tologin/tologin',
                      })
                    }
                  }
                })
              }
            })
          } else {
            console.log('獲取用戶登錄態失敗!' + r.errMsg)
          }
        },
        fail: function () {
          console.log('登陸失敗')
        }
      })

tologin.wxml

<view class="image-div">
<image src='../../utils/logo.jpg' ></image>
<button class='btn_yzm' type="primary" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" size="{{primarySize}}" loading="{{loading}}" plain="{{plain}}"
        disabled="{{disabled}}" bindtap="primary"> 授權登錄 </button>
</view>

tologin.js

//index.js
//獲取應用實例../..
const app = getApp()
var that;
Page({
  data: {
    motto: 'Hello World',
    showModal: false,
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  
  },
  bindGetUserInfo: function (e) {
    var that = this;
    wx.getSetting({
      success: function (res) {
        if (res.authSetting['scope.userInfo']) {
          wx.getUserInfo({
            success: function (res) {
              //console.log("小程序res")
              //console.log(res)
              var userInfo = res.userInfo;
              //console.log("用戶信息")
              //console.log(userInfo)
              var timeStamp = Date.parse(new Date()) / 1000;
              var nickName = userInfo.nickName;
              var gender = userInfo.gender;
              var avatarUrl = userInfo.avatarUrl;
              var country = userInfo.country;
              var province = userInfo.province;
              var city = userInfo.city;
              var param = { code: code, nickname: nickName, logo: avatarUrl }
              var paramsToSign = "appId=101605&param=" + JSON.stringify(param) + "&version=1.0.0&timeStamp=" + timeStamp + "&key=b0bb9ac9bfcfd46d3ec19acb63118e9b";
              var sign = md5(paramsToSign).toLocaleUpperCase();
              //3.請求自己的服務器,解密用戶信息 獲取unionId等加密信息
              wx.request({
                url: app.globalData.openUrl + 'api/register/wechatLogin',//自己的服務接口地址
                method: 'post',
                header: {
                  'content-type': 'application/x-www-form-urlencoded'
                },
                data: { appId: "101605", version: "1.0.0", timeStamp: timeStamp, param: JSON.stringify(param), sign: sign },
                success: function (d) {
                  //console.log("服務器解析后返回的信息")
                  //console.log(d)
                  //4.解密成功后 獲取自己服務器返回的結果
                  if (d.data.code == "000") {
                    var userInfoToStorage = d.data.data;
                    wx.setStorageSync('unionid', userInfoToStorage.unionid);
                    wx.setStorageSync('openid', userInfoToStorage.openid);
                    wx.setStorageSync("token", userInfoToStorage.token);
                    if (gender == "0") {
                      wx.setStorageSync('gender', "女");
                    } else {
                      wx.setStorageSync('gender', "男");
                    }
                    wx.setStorageSync('nickName', nickName);
                    wx.setStorageSync('city', city);
                    wx.setStorageSync('avatarUrl', avatarUrl);

                  } else {
                    console.log('解密失敗');
                  }
                },
                fail: function () {
                  console.log('系統錯誤')
                }
              })
            },
            fail: function () {
              console.log('獲取用戶信息失敗')
              //獲取用戶信息失敗后。請跳轉授權頁面
              wx.showModal({
                title: '警告',
                content: '尚未進行授權,請點擊確定跳轉到授權頁面進行授權。',
                success: function (res) {
                  if (res.confirm) {
                    console.log('用戶點擊確定')
                    wx.navigateTo({
                      url: '../tologin/tologin',
                    })
                  }
                }
              })
            }
          })
        }
      }

    })
    
    //最后,記得返回剛才的頁面
    wx.navigateBack({
      delta: 1
    })
  }
  
})

ok

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM