wx.getUserInfo不支持的解決方案

以前wx.getUserInfo寫在app.js中,爲了儘可能減小影響,加了一個登陸受權頁面tologinhtml

wx.login({
        success: function (r) {
          var code = r.code;//登陸憑證         
          if (code) { 
            //二、調用獲取用戶信息接口
            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.jsapi

//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服務器

相關文章
相關標籤/搜索