微信小程序授权登录报错

2021-02-25 10:13发布

[图]

5条回答
20200921文 - 做更棒的自己!
2楼 · 2021-02-25 10:16

从你的描述来看,微信小程序的授权失败了,首先可能是网速比较差导致的,用户可以检查一下联网情况,然后再重新授权一下,看能不能解决问题。
若依旧不能解决问题的话,可以联系微信客服咨询一下

不吃鱼的猫
3楼 · 2021-02-25 10:30

仔细检查看看是否代码写错或者返回方式不对

樱田妮妮NiNi
4楼 · 2021-02-25 11:00

1、获取code和userinfo顺序反了,看下图

意思就是要先获得code,截一段我的(是好的)

如果是有概率的问题,这样应该就没有问题了

2、获取的加密数据encrypted_data或iv在服务端不是最新的,比如写死了,这个在服务端调试一下就能检查出来

3、PHP环境没有开启openssl,我的就是这个问题,我用php7.1一直出不来,后来偶尔切换了一次7.0马上就可以了;


我想吃肉
5楼 · 2021-02-25 18:27

源码:

1、wxml

{{canIUse && Is_true}}">

open-type="getUserInfo"bindgetuserinfo="bindGetUserInfo">

2、js

// pages/login/login.js

var app = getApp();

Page({

  /**

   * 页面的初始数据

   */

  data: {

    canIUse: wx.canIUse('button.open-type.getUserInfo'),//判断当前版本是否可用小程序的API,回调,参数,组件等功能

    userInfo: {},

    user_device_model: '', //设备名称

    user_device_screen_whith: '', //屏幕宽

    user_device_screen_height: '', //屏幕高

    user_device_NetType: '', //设备网络

    user_device_Language: '', //用户设备语言

    user_device_platform: '', //设备型号

    Is_true: false,//登录按钮是否显示

  },

  /**

   * 生命周期函数--监听页面加载

   */

  onLoad: function (options) {

    wx.showLoading({

      title: '请稍后',

    })

    var that = this;

    // 获取用户当前位置,返回用户的授权结果true/false,查看是否授权

    wx.getSetting({

      success: function (res) {

       /*

图片

        */

       //没有user_no,让用户重新授权

        if (wx.getStorageSync('user_no') == '') {

          res.authSetting['scope.userInfo'] = false;

        }

    //res.authSetting['scope.userInfo']=true,已授权过

        if (res.authSetting['scope.userInfo']) {

          //调用 getUserInfo 获取用户信息(此操作需要先授权,才能调用成功)

          wx.getUserInfo({

            lang: 'zh_CN',

            success: function (res) {

                  //缓存信息,并返回到指定页面

                 wx.setStorageSync('userInfo', res.userInfo);

                  var storage_sync_url = wx.getStorageSync('url');

                  if (storage_sync_url != '') {

                    wx.reLaunch({

                      url: '/' + storage_sync_url,

                    })

                  } else {

                    wx.reLaunch({

                      url: "/pages/index/index",

                    })

                  }

            }

          })

        } else {//显示登录按钮,执行授权

          wx.hideLoading();

          that.setData({

            Is_true: true,

          })

        }

      }

    })

    //获取网络

    wx.getNetworkType({

      success: function (res) {

        that.setData({

          user_device_NetType: res.networkType,

        })

      },

    })

    //获取手机型号

    wx.getSystemInfo({

      success: function (res) {

        that.setData({

          // user_device_model: res.model,

          user_device_model: res.brand,

          user_device_screen_whith: res.screenWidth,

          user_device_screen_height: res.screenHeight,

          user_device_Language: res.language,

          user_device_platform: res.platform

        })

      },

    })

  },


 //修改用户型号信息

  UserDeviceUpdate: function (user_no) {

    var that = this;

    wx.request({

      url: app.url + "/user/Login/UserDeviceUpdate.php", 

      data: {

        "user_no": user_no,

        "user_device_model": that.data.user_device_model,

        "user_device_screen_whith": that.data.user_device_screen_whith,

        "user_device_screen_height": that.data.user_device_screen_height,

        "user_device_NetType": that.data.user_device_NetType,

        "user_device_Language": that.data.user_device_Language,

        "user_device_type": that.data.user_device_platform

      },

      header: {

        'content-type': 'application/x-www-form-urlencoded'

      },

      method: 'POST',

      success: function (res) { },

      fail: function (res) { },

      complete: function (res) { },

    })

  },

//点击登录按钮,弹出授权界面

bindGetUserInfo: function (event) {

    var that = this;

    //点击拒绝

    if (event.detail.errMsg == 'getUserInfo:fail auth deny') {

      wx.showModal({

        showCancel: false,

        title: '警告',

        content: '您点击了拒绝授权,将无法正常使用小程序的功能体验。请点击确认授权,或者删除小程序重新进入。',

        success: function (res) {

          if (res.confirm) {

            wx.redirectTo({

              url: 'login',

            })

          }

        }

      })

    } else {//点击允许

      wx.showLoading({

        title: '加载中',

      })

      wx.setStorageSync('userInfo', event.detail.userInfo)

      //使用

      wx.getSetting({

        success: res => {

          if (res.authSetting['scope.userInfo']) {

            // 已经授权,调用登录结果获取登录凭证code,通过凭证换取用户登录信息

            wx.login({

              success: function (res) {

图片

              var code = res.code; //登录凭证

                if (code) {

                  //2、调用获取用户信息接口,发起网络请求

                  wx.getUserInfo({

                    lang: 'zh_CN',

                    success: function (res) {

                      //3.请求自己的服务器,解密用户信息 获取unionId等加密信息

                      wx.request({

                        url: app.url + "/user/Login/login.php", //自己的服务接口地址

                        method: 'post',

                        header: {

                          'content-type': 'application/x-www-form-urlencoded'

                        },

                        data: {

                          encryptedData: res.encryptedData,

                          iv: res.iv,

                          code: code

                        },

                        success: function (data) {

                          //4.解密成功后 获取自己服务器返回的结果

                          if (data.statusCode == 200) {

                            wx.setStorageSync('openid', data.data.openId) //缓存openID

                            wx.request({

                              url: app.url + "/user/Login/user.php",

                              method: 'POST',

                              header: {

                                'content-type': 'application/x-www-form-urlencoded'

                              },

                              data: {

                                "nickname": data.data.nickName,

                                "gender": data.data.gender,

                                "city": data.data.city,

                                "province": data.data.province,

                                "openid": data.data.openId,

                                "pic": data.data.avatarUrl,

                                "unionid": data.data.unionId,

                              },

                              success: function (res) {

                                that.UserDeviceUpdate(res.data);

                                wx.setStorageSync('user_no', res.data) //缓存user_no

                                var storage_sync_url = wx.getStorageSync('url');

                                if (storage_sync_url != '') {

                                  wx.reLaunch({

                                    url: '/' + storage_sync_url,

                                  })

                                } else {

                                  wx.reLaunch({

                                    url: "/pages/index/index",

                                  })

                                }

                              },

                              fail: function () { }

                            })

                          } else { console.log('解密失败') }

                        },

                        fail: function () { console.log('系统错误') }

                      })

                    },

                    fail: function () {console.log('获取用户信息失败') }

                  })

                } else { console.log('获取用户登录态失败!' + r.errMsg) }

              },

              fail: function () { console.log('登陆失败') }

            })

          } else { console.log('获取用户信息失败') }

        }

      })

    }

  },

})



侧耳倾听
6楼 · 2021-03-01 09:15

从你的描述来看,微信小程序的授权失败了,首先可能是网速比较差导致的,用户可以检查一下联网情况,然后再重新授权一下,看能不能解决问题。
若依旧不能解决问题的话,可以联系微信客服咨询一下