1 后端获取“接口调用凭证”(后面会用到)
后端可以创建一个定时任务,从微信持续获取“接口调用凭证”并放入缓存;调用绝大多数微信后台接口时都需使用 access_token ,开发者需要进行妥善保存。
2 前端发起获取手机号接口
需要一个button按钮,让用户主动去触发并调起获取手机号接口;当用户点击并同意之后,可以通过 bindgetphonenumber 事件(在uniapp中@getphonenumber)回调获取到动态令牌code。
3 前端将code传给后端,后端用code调用微信后台接口获取手机号
如题,前端把code传给后端,后端调用微信接口,用 acces_token 和 code 获取用户手机号。
获取手机号
phonenumbergetPhoneNumber
authgetAccessToken
小程序所有新进用户的昵称全部变成了“微信昵称”,当时我就
吓得我赶紧爬起来翻文档(需要代码直接往后翻)
原因就像微信所说的,很多开发者在打开小程序时就通过组件方式唤起getUserInfod窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。
这里我会给出Uni-app的适配代码,针对CRMEB系统进行修复,各位同学举一反三(413号之前发布的正式包暂不影响)
1修改pages/users/wechat_login/indexvue中关于微信登录的按钮
<button span=""
class="bg-green btn1">微信登录
<button span=""
class="bg-green btn1">微信登录
2默认data中添加canUseGetUserProfile: false,然后在加载页面调用的方法里面增加unigetUserProfile的判断,是否显示新的按钮。
canUseGetUserProfile: false
if (unigetUserProfile) {
thiscanUseGetUserProfile = true
}
3方法中新增getUserProfile方法用户获取用户信息
//小程序授权api替换 getUserInfo
getUserProfile() {
unishowLoading({
title: '正在登录中'
});
let self = this;
RoutinegetUserProfile()
then(res => {
let userInfo = resuserInfo;
userInfocode = thiscode;
userInfospread_spid = appglobalDataspid; //获取推广人ID
userInfospread_code = appglobalDatacode; //获取推广人分享二维码ID
RoutineauthUserInfo(userInfo)
then(res => {
if (resdatakey !== undefined && resdatakey) {
unihideLoading();
selfauthKey = resdatakey;
selfisPhoneBox = true;
} else {
unihideLoading();
let time = resdataexpires_time - self$Cachetime();
self$storecommit('LOGIN', {
token: resdatatoken,
time: time
});
thisgetUserInfo()
}
})
catch(res => {
unihideLoading();
unishowToast({
title: resmsg,
icon: 'none',
duration: 2000
});
});
})
catch(res => {
unihideLoading();
});
},
4然后在libs/routinejs中增加getUserProfile方法
/
新版小程序获取用户信息 2021 413微信小程序开始正式启用
/
getUserProfile(code) {
return new Promise((resolve, reject) => {
unigetUserProfile({
lang: 'zh_CN',
success(user) {
if (code) usercode = code;
resolve({
userInfo: user,
islogin: false
});
},
fail(res) {
reject(res);
}
})
})
}
这里要注意
if (!isset($userInfoCong['openid'])) {
throw new ValidateException('openid获取失败');
}
if (!isset($userInfoCong['openid'])) {
throw new ValidateException('openid获取失败');
}
userInfo['unionId'] = isset( userInfo [′ unionId ′]= isset (userInfoCong['unionid']) $userInfoCong['unionid'] : '';
userInfo['openId'] = userInfo [′ openId ′]=openid = $userInfoCong['openid'];
修复完成之后重新编译小程序就可以解决授权之后微信用户的问题啦。
但如今,却只能得到一个缺省的灰色头像,和nickname = “微信用户”,两个数据,其它的年龄以及地区等什么都没有,更别提授权d出框了
查看官网如下图才知道API更新了:
>
1、通过unirequest或unidownloadFile函数来实现。unirequest主要用于请求服务器接口数据,而unidownloadFile主要用于下载文件,这两个方法都可以获取、音频、视频等流媒体数据,在请求或下载完成后,可以通过回调函数的参数来获取流媒体数据,如resdata或restempFilePath等。
2、在页面中显示获取到的流媒体数据,可以使用unipreviewImage、unicreateVideoContext、unicreateAudioContext等方法来进行预览或播放 *** 作。将流媒体数据上传到服务器,可以使用uniuploadFile方法来上传,上传完成后,服务器会返回上传成功后的文件路径,再将该路径保存到后台数据库中,以便在前端页面中正确地获取该文件。
1新建一个目录utils,然后该目录下新建一个requestjs文件,进行封装。
2在utils文件夹下一起建一个authjs文件用来获取token
3建一个api的目录,然后相应pages是什么页面就建一个对应名字的目录和文件,listjs文件就是我们请求接口
4然后在页面上listvue上调用接口。
以上就是关于qq小程序道具优惠劵怎么卡进去全部的内容,包括:qq小程序道具优惠劵怎么卡进去、uniapp 用户拒绝授权再次调起授权-语音识别、微信地址、微信附近地址、uniapp:微信小程序获取用户手机号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)