2023年11月1日蜻蜓C影视追剧系统v1.2.2更新-与时俱进调整微信登录授权获取方式-修复无法登陆授权

news2025/2/24 3:28:20

2023年11月1日蜻蜓C影视追剧系统v1.2.2更新-与时俱进调整微信登录授权获取方式-修复无法登陆授权

问题背景:

小程序用户头像昵称获取规则调整公告官方 微信团队2022-05-09 更新时间:2022年11月9日

由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称。

更新时间:2022年9月28日

考虑到近期开发者对小程序用户头像昵称获取规则调整的相关反馈,平台将接口回收的截止时间由2022年10月25日延期至2022年11月8日24时。

调整背景

在小程序内,开发者可以通过 wx.login 接口直接获取用户的 openId 与 unionId 信息,实现微信身份登录,支持开发者在多个小程序或其它应用间匿名关联同一用户。

同时,为了满足部分小程序业务中需要创建用户的昵称与头像的诉求,平台提供了 wx.getUserProfile 接口,支持在用户授权的前提下,快速使用自己的微信昵称头像。

但实践中发现有部分小程序,在用户刚打开小程序时就要求收集用户的微信昵称头像,或者在支付前等不合理路径上要求授权。如果用户拒绝授权,则无法使用小程序或相关功能。在已经获取用户的 openId 与 unionId 信息情况下,用户的微信昵称与头像并不是用户使用小程序的必要条件。为减少此类不合理的强迫授权情况,作出如下调整。

添加图片注释,不超过 140 字(可选)

蜻蜓c系统最后一次调整是2022年10月19日更新,因此完美中招遇到此问题,此问题排查了不少时间才发现原来是官方问题造成的,开始排查的时候很莫名其妙,本更新以此记录。

更新日志

·修复微信小程序接口权限由于政策调整导致整个小程序无法正常使用的bug ·增加手动强制上传微信头像,获取微信昵称 ·额外新增头像管理页面 ·调整绑定用户手机号的步骤在微信获取授权这步

截图

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

本次更新前端相关文件

主要更新内容,其他细节内容忽略

 
            }

44    44            },

45    45               watch: {

46                            status: function (newData, oldData) {

47                                

    46                        status: function (newData, oldData) {            

48    47                           if(newData==true){

49    48                                this.getUserWxHead();

50    49                           }


    @@ -74,7 +73,22 @@

74    73                        uni.setStorageSync('user', res.data.data.user)

75    74                        let startTime = new Date().getTime()

76    75                        uni.setStorageSync('validity', startTime);

77                            this.getModifyuserinfo(this.avatarUrl,this.nickName);

    76                        // uni.navigateTo({

    77                        //     url: '/pages/uploadHeader/index'   

    78                        // });

    79                            if(res.data.data.user.hasOwnProperty('nickname')==false){

    80                                uni.navigateTo({

    81                                    url: '/pages/uploadHeader/index'   

    82                                });

    83                                return;

    84                            }

    85                        if(res.data.data.user.nickname=='微信用户' || res.data.data.user.nickname=='' ){

    86                            uni.navigateTo({

    87                                url: '/pages/uploadHeader/index'   

    88                            });

    89                        }

    90                

    91                        // this.getModifyuserinfo(this.avatarUrl,this.nickName);

78    92                              this.$emit("update",'')

79    93                    })

80    94                },


    @@ -97,6 +111,7 @@

97    111                },

98    112                // 获取微信用户头像

99    113                getUserWxHead() {

    114                     console.log(222)  

100    115                    let that = this

101    116                    uni.showModal({

102    117                        title: '温馨提示',
<template>

    2        <view class="body">

    3            <view class="body-top">

    4                <view class="item">

    5                    <text>

    6                        账号名称

    7                    </text>

    8                    <view class="item-name">

    9                         <input class="input-name" type="nickname" maxlength="16" minlength="2" v-model="nickName"

    10                            @change="inputWord" placeholder="点击获取昵称" />

    11                        <image class="my_back" src="./static/back.png"></image>

    12                    </view>

    13                </view>

    14                <view class="divider"></view>

    15                <view class="item">

    16                    <text>

    17                        头像设置

    18                    </text>

    19                    <view class="item-xq">

    20                        <button class="my_txImg1" open-type="chooseAvatar" @chooseavatar="onChooseAvatar" plain="true" style="display: flex; justify-items: center;">

    21                            <view v-if="avatarUrl">    <image class="my_txImg" :src="avatarUrl"></image></view>

    22                            <view v-else  style="font-size: 14px;"> 点击上传图片</view>

    23                        

    24                        </button>

    25                        <image class="my_back" src="./static/back.png"></image>

    26                    </view>

    27                </view>

    28            </view>

    29     

    30        </view>

    31    </template>

    32    

    33    <script>

    34        import {

    35        getModifyuserinfo,

    36        getnewUpload

    37        } from '@/api/login.js';

    38        export default {

    39            data() {

    40                return {

    41                    BASE_URL: getApp().globalData.BASE_URL,

    42                    userInfo: uni.getStorageSync("userInfo"),

    43                    nickName: uni.getStorageSync("userInfo").nickName,

    44                    avatarUrl: uni.getStorageSync("userInfo").avatarUrl,

    45                };

    46            },

    47            methods: {

    48                base64(url, type) {

    49                  return new Promise((resolve, reject) => {

    50                    wx.getFileSystemManager().readFile({

    51                      filePath: url, //选择图片返回的相对路径

    52                      encoding: 'base64', //编码格式

    53                      success: res => {

    54                        // resolve('data:image/' + type.toLocaleLowerCase() + ';base64,' + res.data)

    55                        resolve("data:image/jpg" +";base64,"+res.data)

    56                      },

    57                      fail: res => reject(res.errMsg)

    58                    })

    59                  })

    60                },

    61            

    62                // 清除登录

    63                exit() {

    64                    uni.showModal({

    65                        title: "提示",

    66                        content: "确定要退出登录吗?",

    67                        cancelText: "取消",

    68                        confirmText: "确定",

    69                        success: (res) => {

    70                            if (res.confirm) {

    71                                uni.clearStorageSync();

    72                                uni.reLaunch({

    73                                    url: "../index/index",

    74                                });

    75                            }

    76                        },

    77                    });

    78                },

    79                onChooseAvatar(e) {

    80                    this.avatarUrl= e.detail.avatarUrl

    81                    if(this.nickName=='' || this.nickName==undefined){

    82                        uni.showToast({

    83                            title: '请先点击获取昵称',

    84                            duration: 2000,

    85                            icon:"none",

    86                            mask: true,

    87                        });

    88                        return;

    89                    }

    90                    this.base64(this.avatarUrl).then(rest=>{

    91                        var data={

    92                            image:rest

    93                        }

    94                        getnewUpload(data).then(res=>{

    95                                var data={

    96                                         avatar: res.data.data.image_url,

    97                                         nickname:this.nickName

    98                                }

    99                                 getModifyuserinfo(data).then(res=>{

    100                                                 if(res.data.code==200){

    101                                    

    102                                                    uni.setStorageSync('user', res.data.data)

    103                                                    uni.navigateBack({

    104                                                            delta:1,//返回层数,2则上上页

    105                                        })

    106                                       }

    107                                 })

    108                        })

    109                            

    110                        

    111                    })

    112            

    113                },

    114                

    115                inputWord(e) {

    116                    this.nickName = e.detail.value

    117                                    let str = this.nickName.trim();

    118                            //         if(str.length==0){

    119                            //             uni.showToast({

    120                            //                 title: '请输入合法的昵称',

    121                            //                 duration: 2000,

    122                            //                 icon:"none",

    123                            //                 mask: true,

    124                            //             });

    125                            //   return

    126                            // }

    127                        if((/[^/a-zA-Z0-9\u4E00-\u9FA5]/g).test(str)){

    128                            uni.showToast({

    129                                title: '请输入中英文和数字',

    130                                duration: 2000,

    131                                icon:"none",

    132                                mask: true,

    133                            });

    134                        return

    135                        }

    136                    setTimeout(() => {

    137                        if(this.nickName == e.detail.value){

    138                            console.log('this.nickName',this.nickName.trim())

    139                            this.userInfo.nickName = this.nickName.trim()

    140                            uni.showModal({

    141                                title: "提示",

    142                                content: "确定修改昵称为:"+this.nickName+"?",

    143                                cancelText: "取消",

    144                                confirmText: "确定",

    145                                success: (res) => {

    146                                    if(res.confirm){

    147                                        this.updateUserInfo()

    148                                    }

    149                                },

    150                            });

    151                        }

    152                    }, 2000)

    153                },

    154                

    155                /* 上传 头像 转 话格式*/

    156                uploadFile(){

    157                    console.log('上传图片',this.avatarUrl)

    158                    uni.uploadFile({

    159                        url: this.BASE_URL + '/put-file', //服务器地址

    160                        filePath: this.avatarUrl, //这个就是我们上面拍照返回或者先中照片返回的数组

    161                        name: 'file',

    162                        formData: {

    163                            'user': 'test'

    164                        },

    165                        header: {

    166                            'Authorization': 'Basic d2VjaGF0OndlY2hhdF9zZWNyZXQ',

    167                            'Blade-Auth': 'bearer ' + uni.getStorageSync('token')

    168                        },

    169                        success: (uploadFileRes) => {

    170                            let json = JSON.parse(uploadFileRes.data)

    171                            console.log('json',json)

    172                            this.avatarUrl = json.data.link

    173                                                    this.userInfo.avatarUrl = this.avatarUrl

    174                                                    // uni.setStorageSync('userInfo', this.userInfo)

    175                            this.updateUserInfo();

    176                            setTimeout(function() {

    177                                uni.hideLoading();

    178                            }, 1000);

    179                        },

    180                        fail: e => {

    181                                                uni.showToast({

    182                                                    title: '上传失败',

    183                                                    duration: 2000,

    184                                                    icon:"error",

    185                                                    mask: true,

    186                                                });

    187                        }

    188                    });

    189                },

    190                

    191                updateUserInfo(){

    192                 

    193                    console.log( this.avatarUrl,this.nickName.trim())

    194                    uni.request({

    195                        url: this.BASE_URL + "/wechatuser/update",

    196                        method: "POST",

    197                        data: this.userInfo,

    198                        header: {

    199                            Authorization: "Basic d2VjaGF0OndlY2hhdF9zZWNyZXQ",

    200                            "Blade-Auth": "bearer " + uni.getStorageSync("token"),

    201                        },

    202                        success(res) {

    203                                            uni.showToast({

    204                                                title: '修改成功',

    205                                                duration: 2000,

    206                                                mask: true,

    207                                            });

    208                        }

    209                    })

    210                },

    211            }

    212        }

    213    </script>

    214    

    215    <style lang="scss">

    216        button[plain] {

    217            border: 0

    218        }

    219        .body-top{

    220            margin: 20rpx 20rpx 0rpx 20rpx;

    221            background-color: #FFF;

    222            border-radius: 20rpx;

    223            padding-bottom: 20rpx;

    224            display: flex;

    225            flex-direction: column;

    226        }

    227        .item{

    228            margin: 20rpx 20rpx 20rpx 20rpx;

    229            min-height: 70rpx;

    230            display: flex;

    231            flex-direction: row;

    232            justify-content: space-between;

    233            align-items: center;

    234            font-size: 28rpx;

    235        }

    236        .item-name{

    237            min-height: 70rpx;

    238            display: flex;

    239            flex-direction: row;

    240            align-items: center;

    241            font-size: 28rpx;

    242            text-align: end;

    243        }

    244        .input-name{

    245            margin-right: 10rpx;

    246            text-align: end;

    247        }

    248        .item-xq{

    249            display: flex;

    250            flex-direction: row;

    251            align-items: center;

    252        }

    253        .my_txImg1{

    254            height: 140rpx;

    255            background-color: #FFF;

    256            // border-radius: 50%;

    257        }

    258        .my_txImg{

    259            width: 140rpx;

    260            height: 140rpx;

    261            border-radius: 50%;

    262        }

    263        .my_back {

    264            width: 19rpx;

    265            height: 24rpx;

    266            

    267        }

    268        .divider{

    269            background: #E0E3DA;

    270            width: 95%;

    271            height: 2rpx;

    272            margin-left: 20rpx;

    273        }

    274        .exit {

    275            width: 590rpx;

    276            height: 80rpx;

    277            display: flex;

    278            align-items: center;

    279            justify-content: center;

    280            margin: 0 auto;

    281            // border: 1rpx rgba($color: #000000, $alpha: 0.1) solid;

    282            background-color: #FA5F4A;

    283            position: absolute;

    284            color: #fff;

    285            border-radius: 20rpx;

    286            // box-shadow: 0rpx 0rpx 9rpx rgba($color: #000000, $alpha: 0.1);

    287            bottom: 100rpx;

    288            margin-left: 80rpx;

    289        }

    290    </style>

本次更新服务端相关文件

内容过多本次略

本次更新后台管理相关文件

内容过多本次略

本次数据库结构改动

内容过多本次略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“Lazada API揭秘:按关键字搜索商品,轻松掌握电商未来!“

Lazada的API可以按关键字搜索商品。请求参数包括&#xff1a; key&#xff1a;调用key&#xff0c;必须以GET方式拼接在URL中。secret&#xff1a;调用密钥。qshoe&&#xff1a;要搜索的关键字。start_price&end_price&&#xff1a;价格范围&#xff0c;可按价格筛…

HackTheBox-Starting Point--Tier 1---Pennyworth

文章目录 一 题目二 实验过程 一 题目 Tags Web、Common Applications、Jenkins、Java、Reconnaissance、Remote Code Execution、Default Credentials译文&#xff1a;Web、常见应用、Jenkins、Java、侦察、远程代码执行、默认凭证Connect To attack the target machine, y…

行情分析——加密货币市场大盘走势(11.1)

大饼短期内处于震荡&#xff0c;目前在吸血山寨。对于做中长线的也是可以秉持“做多大饼&#xff0c;做空山寨“的原则。目前大饼依然保持逢低做多即可&#xff0c;短期内依然不容易下跌。稳健的朋友&#xff0c;大家可以不做大饼。 以太目前也是处在震荡向上过程&#xff0c;以…

浅谈电动汽车充电桩检测技术的实现

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a; 关键词&#xff1a;电动直流和交流充电桩是我国电动汽车充电桩中运行量较大的一种。为了保持正常运行和使用&#xff0c;应高度重视检测、运行和维护工作。因此&#xff0c;有关部门应做好充电桩的检测工作…

MIT6.5830 Lab1-GoDB实验记录(二)

MIT6.5830 Lab1-GoDB实验记录&#xff08;二&#xff09; – WhiteNights Site 标签&#xff1a;Golang, 数据库 接下来我们将完成tuple.go的缺失代码&#xff0c;并通过tuple_test.go的测试。 实验步骤 观察tuple.go 观察肯定是第一步&#xff0c;先打开tuple.go。 快300行代…

【嵌入式开发学习】__hex文件、bin文件、axf文件的区别

目录 前言 一、编译的过程 二、可烧录的文件 三、离线文件的烧录方法 (*&#xffe3;︶&#xffe3;)创作不易&#xff01;期待你们的 点赞、收藏和评论喔。 前言 在STM32开发中&#xff0c;经常会碰到hex文件、bin文件、axf文件&#xff0c;这些都是可以烧写到板子里运…

股神巴菲特靠押注加密获巨额利润?比特币成不确定时代的投资选择!

股神巴菲特(Warren Buffett)以前曾将比特币描述为“老鼠药”&#xff0c;表达了对加密货币发展的悲观看法。然而他却通过持有一家对比特币友好的银行的股票&#xff0c;获得了巨额利润。 据悉&#xff0c;伯克希尔哈撒韦公司在2021年6月向Nu Holdings投资了5亿美元&#xff0c;…

Latex排版SIGGRAPH总结(持续总结中...)

本文学习总结自&#xff1a;How to use the ACM SIGGRAPH / TOG LaTeX template 相关文件&#xff1a;百度网盘 首先解压 “my paper” 中的文件&#xff0c;并用Latex打开mypaper.tex. 多行连等公式 \begin{equation}表示编号公式&#xff0c;\[ \]表示无编号公式 无编号\b…

设计模式—创建型模式之建造者模式

设计模式—创建型模式之建造者模式 如果我们创建的对象比较复杂&#xff0c;但其细节还要暴露给使用者&#xff0c;这样就需要用到建造者模式。 建造者设计模式&#xff0c;屏蔽过程&#xff0c;而不屏蔽细节。 比如我们有一个手机类&#xff0c;定义如下&#xff1a; publ…

在 Linux 中更改 echo 的输出颜色

文章目录 前言一、快速入门二、基本使用2.1 对于常规的输出2.2 对于字体加粗的输出2.3 对于字体斜体的输出2.4 对于带下划线的输出2.5 对于闪烁效果的输出 三、小结 前言 在计算机编程世界中&#xff0c;颜色不仅仅是一种视觉效果&#xff0c;它也是一种信息传递的工具。特别是…

ES-初识ES

文章目录 介绍ElasticSearchElasticSearch的主要功能ElasticSearch的主要特性ElasticSearch的家族成员LogStashKibanaBeats ELK&#xff08;ElasticSearch LogStash Kibana&#xff09;的应用场景与数据库集成指标采集/日志分析 安装和配置ElasticSearch一、安装1、下载ES安装…

项目级asp.net框架的LIMS实验室管理系统源码

LIMS可用于管理完整的实验程序&#xff0c;从样品登记到检验、校核、审核到最终批准报告&#xff0c;建立在过程质量控制的基础上&#xff0c;对检测流程进行有效全面的管理&#xff0c;对影响质量的人、机、料、法、环因素加以控制&#xff0c;同时为质量改进提供数据依据。进…

如何快速绘制网络拓扑图

关于网络拓扑 网络拓扑能直观明了的展示网络中各网元之间的关系&#xff0c;极大方便运维人员对网络进行实时监测、优化配置、故障排查等操作。 传统采用Visiot或PowerPoint的方式存在耗时耗力且无法实现动态更新&#xff0c;维护及使用成本高&#xff1b;可展现的内容有限&a…

Open-AI的野心,绝不止于文字聊天,或在为未来人形伴侣打基础

01 前言 最近浏览Open-AI的官网&#xff0c;看到其官网目前除了gpt4外&#xff0c;更新的音频&#xff0c;图像模块&#xff0c;小编顿时感叹&#xff0c;Open-AI的野心&#xff0c;绝对不不止于文字聊天&#xff01; 02 生成式AI大模型的领先者从openai开始发布Chatgpt以来…

YOLOv5优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(SC_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 目录 1. SC_C_Detect介绍 2. SC_C_Detect加入YOLOv5 2.1 新建models/head_improve.py

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

数字人小灿:始于火山语音,发于 B 端百业

火爆的数字人市场又有新消息来袭&#xff1a;火山语音的数字人小灿来了&#xff01; 数字人小灿首曝视频 今年以来&#xff0c;在生成式AI浪潮的助推下&#xff0c;大量企业争相布局数字人赛道。市场之所以如此火热&#xff0c;是因为AI数字人已被视为人工智能时代智能交互的入…

我和云栖大会有个约会

前言 云栖大会&#xff08;Alibaba Cloud Computing Conference&#xff09;是中国阿里巴巴集团旗下的云计算技术盛会&#xff0c;旨在推动云计算技术的发展和应用。该大会自2009年首次举办以来&#xff0c;已成为云计算行业内规模最大、影响力最广的会议之一。 云栖大会每年…

Ubantu安装教程(其实和之前CentOS差不多)

文章目录 VM安装见下方参考链接Ubuntu安装我的是Ubuntu22.04.3官网下载我下载的桌面版LTS代表长期支持-这意味着五年的免费安全和维护更新选好版本点击下载就好&#xff08;注意桌面版和服务器版&#xff09; 搭建虚拟机个性化名字自定义安装位置不知道就先默认就好&#xff0c…

联想百应:构建“生态资源池”,打造中小企业转型第一服务平台

与3800多家服务商和100多家SaaS生态伙伴携手&#xff0c;累计支持超过20万中小企业智能化转型……在近日由工业和信息化部和安徽省举办的2023全国中小企业数字化转型大会上&#xff0c;联想集团首次公布供应链、平台、技术、生态与绿色赋能五大赋能能力和助力中小企业“链式”成…