人人商城v3小程序登录循环授权无法登陆,小程序方法getUserInfo换成getUserProfile造成

人人商城v3小程序登录循环授权无法登陆,小程序方法getUserInfo换成getUserProfile造成

Yonny
2021-05-08 / 4 评论 / 113 阅读 / 正在检测是否收录...

最近调试小程序发现,商城的登录授权一直循环无法登陆进去商城,原因是小程序getUserInfo换成getUserProfile方法,所以原来的接口无法完成授权登陆操作了

2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与<button
open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

官方文档https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801

人人商城小程序用户授权登录失败,getUserProfile小程序登录接口升级

下面我针对我自己做出的修复工作进行一个记录
参考网友的教程:https://taotaoit.com/article/details/1499.html
1.首先要先修改一下小程序授权按钮的触发事件
pages/message/auth/index.wxml
把原来的按钮注释掉,使用

<button bindtap="getUserProfile" class="authBtn" lang="zh_CN">立即登录</button>

<view class="page">
    <view class="inner">
        <view class="image">
            <image src="/static/images/accredit.png"></image>
        </view>
        <view class="text" wx:if="{{!close}}">
            <text>小程序需要获取您的授权
                才能为您提供后续服务哦</text>
        </view>
        <!-- <button bindgetuserinfo="bindGetUserInfo" class="btn" openType="getUserInfo" wx:if="{{!close}}">点击授权</button> -->
        <button bindtap="getUserProfile" class="authBtn" lang="zh_CN">
            立即登录
        </button>
        <view class="text" wx:if="{{close}}">{{text}}</view>
    </view>
</view>

2.然后再去逻辑文件修改
pages/message/auth/index.js
增加一下这个方法,也就是新修改的按钮触发的方法

getUserProfile(){
            var a = e.getCache("routeData"), i = a.url, s = a.params, o = "";
            Object.keys(s).forEach(function(e) {
                o += e + "=" + s[e] + "&";
            });
            var c = "/" + i + "?" + (s = o.substring(0, o.length - 1));
            console.log(c)
            wx.getUserProfile({ 
                desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 
                success: (res) => { 
                    // console.log("获取用户信息成功", res); 
                    // return;
                    wx.showLoading({
                        title: "加载中"
                    }), wx.login({            
                        success: function(n) {
                    //         console.log(t);
                    // return;
                            t.post("wxapp/login", {
                                code: n.code
                            }, function(f) {
                    //             console.log(t.openid);
                    // return;
                                f.error ? t.alert("获取用户登录态失败:" + f.message) : t.get("wxapp/auth", {
                                    data: res.encryptedData,
                                    iv: res.iv,
                                    sessionKey: f.session_key,
                                    openId:f.openid
                                }, function(g) {
                                    1 == g.isblack && wx.showModal({
                                        title: "无法访问",
                                        content: "您在商城的黑名单中,无权访问!",
                                        success: function(h) {
                                            h.confirm && e.close(), h.cancel && e.close();
                                        }
                                    }), res.userInfo.openid = g.openId, res.userInfo.id = g.id, res.userInfo.uniacid = g.uniacid, 
                                    e.setCache("userinfo", res.userInfo), e.setCache("userinfo_openid", res.userInfo.openid), 
                                    e.setCache("userinfo_id", n.id), e.getSet(), wx.reLaunch({
                                        url: c
                                    });
                                });
                            });
                        },
                        fail: function() {
                            t.alert("获取用户信息失败!");
                        },
                        complete: function() {
                            wx.hideLoading();
                        }
                    });
                }, 
                fail: res => { 
                    // console.log("获取用户信息失败", res) 
                    t.alert("获取用户信息失败!");
                } 
            })
        },

3.然后再去修改后端小程序授权接口代码
addons/ewei_shopv2/plugin/app/core/mobile/wxapp.php
由于getUserProfile本身就是不返回openid的,需要openid用login接口
找到auth的方法里面,获取小程序传过来的openID

$data['openId'] = $_GPC['openId'];

微信截图_20210508115958.png

做完以上修改,小程序应该可以登录授权了的,如有疑问可以邮箱咨询或者评论区提出,再次感谢引用文章作者

5

评论 (4)

取消
  1. 头像
    解决getUserProfile
    Windows 10 · Google Chrome

    解决getUserProfile登录问题合作

    回复
    1. 头像
      Yonny 作者
      Windows 10 · Google Chrome
      @ 解决getUserProfile

      你好,你是碰到什么问题了?

      回复
  2. 头像
    1155
    Windows 10 · Google Chrome

    表情表情表情有用

    回复
  3. 头像
    SKT
    Android · Google Chrome

    画图

    回复