微信小程序怎么删除为何数据绑定不成功? 出现调用 wx.login 是受限的

最近在给公司开发微信小程序,需要用到微信登录,根据文档要求需要把获取的用户信息按照AES进行解密。
我使用的是官方提供的PHP demo,拷贝到程序中,测试发现,解密之后的数据前面有一串乱码。
类似于这样子的,前面一段是乱码。
经过仔细的检查,发现官方的提供的demo中的帐号和机密之后的信息是可以解密的,这就说明解密代码是没有问题的。
后来查询,找到好多解密失败。其中一个回答说是因为多次调用wx.login之后导致的问题。
终于看到解决方案,于是赶紧去看我的代码。可是查找半天发现只调用了一次,根本不是这个问题。
有一次走到了死胡同,没办法了,还是看代码吧。
根据文档,应该是先调用wx.login(),成功之后再调用wx.getUserInfo(), 于是我就想,会不会是我把wx.getUserInfo()获取到的值没有正确的传给服务器呢?
既然不确定,那就得看看。于是,打印wx.getUserInfo()的返回值,是这样子的
看到结果之后我就跟我的请求服务器的参数挨个对照,当看到encryptData时,发现了问题,文档上写的是应该把encryptedData的值用于解密,而我则是把encryptData的值
取出来了,所以解密结果就不正确了。
至此,发现问题,把参数改成encryptedData之后解密成功。
至于为什么微信要多返回一个没用的参数(目前还没发现它的作用),我就不知到了,而且文档上根本就没提到这个。
&希望大家编码的时候能够细心一点,不要犯我这样的错误。
阅读(...) 评论()迎接黎明的曙光前行!
微信小程序----编写后台服务接口配置文件
编写后台服务接口配置文件
const basePath = 'http://test.cdbhbc.com/wbgapi';
const urlList = {
refreshTokeUrl: basePath + '/refreshToke',
loginUrl: basePath + '/wxappLogin',
advertPicListUrl: basePath + '/advertPicList',
shopSortListUrl: basePath + '/shopSortList',
shopListUrl: basePath + '/shopList',
shopDetailUrl: basePath + '/shopDetail',
goodsSortListUrl: basePath + '/goodsSortList',
goodsListUrl: basePath + '/goodsList',
goodsDetailUrl: basePath + '/goodsDetail',
orderListUrl: basePath + '/orderList',
orderDetailUrl: basePath + '/orderDetail',
payBeforeInfoUrl: basePath + '/payBeforeInfo',
submitOrderUrl: basePath + '/submitOrder',
emptyShopCartUrl: basePath + '/emptyShopCart',
addShopCartUrl: basePath + '/addShopCart',
shopCartListUrl: basePath + '/shopCartList',
shopCartBuyCountOperateUrl: basePath + '/shopCartBuyCountOperate',
wxPayUrl: basePath + '/wxPay/payConfig',
goodsSpecialDetailUrl: basePath + '/goodsSpecialDetail',
submitSpecialOrderUrl: basePath + '/submitSpecialOrder',
shopMyListUrl: basePath + '/shopMyList',
shopMyAddUrl: basePath + '/shopMyAdd',
module.exports = urlL
接口配置文件的使用
const urlList = require('../../utils/config.js');
refreshToke(){
wx.login({
success: res =& {
if(res.errMsg == 'login:ok'){
wx.request({
url: urlList.refreshTokeUrl,
data: { code: res.code },
success: res =& {
if(res.data.state == 'true'){
wx.setStorageSync('token', res.data.data.token);
this.globalData.token = res.data.data.
接口配置文件的作用
在项目开发时能够在固定位置很快查到需要的接口;
服务器地址改变时,只用替换 basePath 的值,就能全部替换,不用去单独页面替换;
方便接口的集中管理,方便后期的维护。
微信小程序,配置服务器地址的步骤及配置过程中遇到的问题和解决方案
微信小程序后台服务怎么搭建
小程序的服务通知(模板消息)
实现以及坑
微信小程序的简单登录
微信小程序--登陆接口
微信小程序登录逻辑整理
小程序的登录和支付接口
微信小程序开发(一) 微信登录流程
微信小程序 登录流程规范
微信小程序登录Java后台接口(详解,附示例代码)
没有更多推荐了,开放接口 · 小程序
开发文档首页微信小程序获取openid,api.weixin.qq.com不能设为安全域名,通过php转发
1、首先wx.login是可以获取到code的
2、其次通过code可以很容易获取到openid,但是直接通过小程序不行。
网上很多示例,例如
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=‘+&code&&/code&appid+’&secret=‘+secret+’&grant_type=authorization_code&js_code='+loginCode.code,
'content-type': 'application/json'
success: function(res) {
console.log(res.data.openid)
这样请求只会提示api.weixin.qq.com不在域名白名单内!
而且在官方平台上设置合法域名,微信却提示“为保障帐号安全不可使用此域名地址,请修改”,这样就郁闷了。
只能转一下,向自己的php服务器发送code,在通过php请求openid再返回openid
3、小程序向php发送get数据
php网址?jsonData={“resCode”:10001,” data”:{“code”:”abcdefghijklmnopq…”}}
php回应数据{“resCode”:10001,”data”:{“openid”:”abcdefg…..”}}
4、小程序代码如下
wx.login({
success:function(res){
var data = {'resCode':10001,'data':{'code':res.code}};
utils.myRequestByGet(
getApp().globalData.phpUrl,
function callback(obj){
if (obj.data.resCode != 10001){
wx.showModal({
title:'错误',
content: obj.data.error,
showCancel:true
that.setData({
openid: obj.data.data.openid
utils.myRequestByGet代码如下:
* get方式的请求都在这里
function myRequestByGet(url,data,callback){
wx.request({
jsonData:data
success:function(obj){
callback(obj);
'Content-type': 'application/json'
服务器端php代码如下,通过code获取openid的方法,具体返回内容自己处理
function getOpenid($code){
$appid = '小程序对应的appid';
$appsecret = '小程序对应的appsecret ';
file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=".$code."&grant_type=authorization_code");
$jsondecode = json_decode($weixin);
$array = get_object_vars($jsondecode);
return $array['openid'];
微信小程序模板发送,openid获取,以及api.weixin.qq.com不在合法域名内解决方法
微信小程序案例:获取微信访问用户的openid
微信端开发--登录小程序
微信小程序中用户登录和登录态维护
微信小程序与微信公众号同一用户登录问题
微信小程序授权获取用户详细信息openid
微信公众号{&errcode&:40029,&errmsg&:&invalid code&} ? 微信公众号错误提示:{&errcode&:40029,&errmsg&:&invalid code&}
微信小程序
code 拿到session_key 和openid
微信小程序获取openid服务器端代码
【微信小程序】登录功能实现及讲解(获取用户唯一标识)
没有更多推荐了,【小程序】小程序o小故事(4)——获取用户信息
时间: 11:30:45
发布:杜凯
作者:胡浩
来源:微信开发者
背景我们发现大部分小程序都会使用&wx.getUserInfo&接口,来获取用户信息。原本设计这个接口时,我们希望开发者在真正需要用户信息的情况下才去调取这个接口,但很多开发者会直接调用这个接口,导致用户在使用小程序的时候产生困扰,归结起来有几点:开发者在小程序首页直接调用&wx.getUserInfo&进行授权,弹框获取用户信息,会使得一部分用户点击“拒绝”按钮。在开发者没有处理用户拒绝弹框的情况下,用户必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。用户没有很好的方式重新授权,尽管我们增加了设置页面,可以让用户选择重新授权,但很多用户并不知道可以这么操作。此外,我们发现开发者默认将&wx.login&和&wx.getUserInfo&绑定使用,这个是由于我们一开始的设计缺陷和实例代码导致的(wx.getUserInfo&必须通过&wx.login&在后台生成&session_key后才能调用)。同时,我们收到开发者的反馈,希望用户进入小程序首页便能获取到用户的&unionId,以便识别到用户是否以前关注了同主体公众号或使用过同主体的App 。为了解决以上问题,针对获取用户信息我们更新了三个能力:1.使用组件来获取用户信息2.若用户满足一定条件,则可以用wx.login&获取到的code直接换到unionId3.wx.getUserInfo&不需要依赖&wx.login&就能调用得到数据获取用户信息组件介绍&组件变化:open-type&属性增加&getUserInfo&:用户点击时候会触发&bindgetuserinfo&事件。新增事件&bindgetuserinfo&:当&open-type为&getUserInfo&时,用户点击会触发。可以从事件返回参数的&detail&字段中获取到和&wx.getUserInfo&返回参数相同的数据。示例:&Click&me和&wx.getUserInfo&不同之处在于:1.API&wx.getUserInfo&只会弹一次框,用户拒绝授权之后,再次调用将不会弹框;2.组件由于是用户主动触发,不受弹框次数限制,只要用户没有授权,都会再次弹框。通过获取用户信息的组件,就可以解决用户再次授权的问题。直接获取unionId开发者申请&userinfo&授权主要为了获取&unionid,我们鼓励开发者在不骚扰用户的情况下合理获得unionid,而仅在必要时才向用户弹窗申请使用昵称头像。为此,凡使用“获取用户信息组件”获取用户昵称头像的小程序,在满足以下全部条件时,将可以静默获得&unionid:1.在微信开放平台下存在同主体的App、公众号、小程序。2.用户关注了某个相同主体公众号,或曾经在某个相同主体App、公众号上进行过微信登录授权。这样可让其他同主体的App、公众号、小程序的开发者快速获得已有用户的数据。不依赖登录的用户信息获取某些工具类的轻量小程序不需要登录行为,但是也想获取用户信息,那么就可以在&wx.getUserInfo&的时候加一个参数&withCredentials: false&直接获取到用户信息,可以少一次网络请求。这样可以在不给用户弹窗授权的情况下直接展示用户的信息。最佳实践1.调用&wx.login&获取&code,然后从微信后端换取到&session_key,用于解密&getUserInfo返回的敏感数据。2.使用&wx.getSetting&获取用户的授权情况& 1) 如果用户已经授权,直接调用 API&wx.getUserInfo&获取用户最新的信息;& 2) 用户未授权,在界面中显示一个按钮提示用户登入,当用户点击并授权后就获取到用户的最新信息。3.获取到用户数据后可以进行展示或者发送给自己的后端。One More Thing除了获取用户方案介绍之外,再聊一聊很多初次接触微信小程序的开发者所不容易理解的一些概念:1.关于OpenId和UnionIdOpenId&是一个用户对于一个小程序/公众号的标识,开发者可以通过这个标识识别出用户。UnionId&是一个用户对于同主体微信小程序/公众号/APP的标识,开发者需要在微信开放平台下绑定相同账号的主体。开发者可通过UnionId,实现多个小程序、公众号、甚至APP 之间的数据互通了。同一个用户的这两个 ID 对于同一个小程序来说是永久不变的,就算用户删了小程序,下次用户进入小程序,开发者依旧可以通过后台的记录标识出来。2.关于 getUserInfo 和 login很多开发者会把&login&和&getUserInfo&捆绑调用当成登录使用,其实&login&已经可以完成登录,getUserInfo&只是获取额外的用户信息。在&login&获取到&code&后,会发送到开发者后端,开发者后端通过接口去微信后端换取到&openid&和sessionKey(现在会将&&code style=&margin: 0px 4px 0
↑ 上一篇:
↓ 下一篇:
24h全面监控服务器
高频度系统安全更新
域名备案、营销指导
主动回访了解客户需求
Have Requests?
您有需求,刚好我们很专业!为您服务是我们的荣幸!
产业布局理念:艺源,让智慧起舞,让科技带来价值!产品服务理念:艺源,始终关注产品价值,永远跟您更多!
官方微信公众号 & 产品经理

我要回帖

更多关于 两个微信 的文章

 

随机推荐