麒麟子Cocos Creator实用技巧一:如何正确地显示微信头像
不管是游戏App,还是H5,又或者是微信小游戏。但凡接入了微信登录的应用,都可能需要显示微信头像。
在Cocos Creator中,我们常见的显示方法像下面这样
var headimg = 'http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83erD6MOUwRKV9NyBAqnoFDTnltzAe2zWOkKxyDOFibVBb1ZV5CaATJwYAuNqZ5sXMBC4c8iacaHDf8RA/132';cc.loader.load({url:headimg,type:'jpg'},function(err,tex){self.icon.spriteFrame = new cc.SpriteFrame(tex);
});
这样做大部分情况下是没有问题的。但容易踩到两个坑
- 假如用户在微信中上传的头像不是jpg格式,将会显示为黑屏
- 假如是H5中使用上述代码,会提示跨域访问
而最近(今天日期 2019-04-22)新出了一个奇怪的事情,就是Android系统7.0+的机器,在4G网下无法正常显示微信头像。 包括腾讯的欢乐斗地主里的排行榜也显示不出来。
这个问题我猜测,是4G的Android 7.0+的HTTP头和其他环境下不一样,导致腾讯拒绝了头像访问。 应该是封杀某音的时候,误伤。
解决这个问题最直接的办法,就是在自己的服务器上,配置一条NGINX转发协议。
server {listen 80;#server_name h5.ooxx.cn;root /root/wwwroot/;location /image {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass $arg_url;}}
假如,我们的外网IP或者域名是 h5.ooxx.cn, 端口是80,或者其他的。 我们修改上面的访问方式为如下
var headimg = 'http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83erD6MOUwRKV9NyBAqnoFDTnltzAe2zWOkKxyDOFibVBb1ZV5CaATJwYAuNqZ5sXMBC4c8iacaHDf8RA/132';
var url = 'http://h5.ooxx.cn:port/image?url=' + headimg + '&sb=213.jpg';
cc.loader.load(url,function(err,tex){self.icon.spriteFrame = new cc.SpriteFrame(tex);
});
这样改的原因如下
1、假如你做的是H5项目,h5.ooxx.cn域名刚好就是你的页面加载域名,那么你将处于同域中,不再有跨域问题
2、当我们请求最后合成的url时,NGINX会将url参数作为请求地址,转发出去,并且将获取到的信息,原路返回。 而我们添加的proxy_redirect off; 将会抹去我们系统机型为我们添加的各种HTTP HEADER。 不会再出现Android 7.0+ 4G网加载不了的问题。
3、添加 &sb=213.jpg参数,是为了让cc.loader.load函数识别到这是一个图片加载。 但由于不是强制的填写type,即使PNG也是可以正常显示的。
以上就是麒麟子在做项目的时候,解决微信头像,以及一些第三方服务器图片的最终方案。 希望能够帮助到大家。
麒麟子Cocos Creator实用技巧一:如何正确地显示微信头像相关推荐
- 麒麟子Cocos Creator实用技巧
麒麟子Cocos Creator实用技巧 大家好,我是麒麟子, 开源棋牌<幼麟棋牌-四川麻将>(泄漏版叫 <达达麻将>)作者,成都幼麟科技创始人. 自09年进入游戏行业以来,不 ...
- 麒麟子Cocos Creator实用技巧八:回合战棋类RPG战斗效果
HELLO,大家好,我是麒麟子.作为Cocos社区高产用户,今天又给大家带来了一个看起来很酷,但实际上大多数人用不到的DEMO. 不知道大家是否记得梦幻西游.问道.英雄无敌.仙剑奇侠传.神仙道.神曲O ...
- 麒麟子Cocos Creator实用技巧五:技能CD效果制作
今天带给大家的是一个关于技能CD的效果制作. 此效果不仅可以用于技能CD,一些按钮的CD也是可以用的. 为了照顾大家迫不及待(猴急)的心情,我写了一个DEMO给大家.DEMO上面做了5个英雄的技能和一 ...
- 麒麟子Cocos Creator实用技巧六:游戏背景拖拽实现
麒麟子做了一个DEMO给大家,这个DEMO很简单,大家可以按下鼠标,或者在手机上按住不放. 拖拽背景,背景会根据拖拽移动. 同时会保证背景边缘不会越过父节点的上下左右边界 在线演示:https://q ...
- 麒麟子Cocos Creator实用技巧七:方向与角度转换
麒麟子做了一个Demo给大家,向大家演示了方向转角度,角度转方向的应用. Demo中有两个坦克,中间的坦克锁定了另一个坦克,始终把自己的炮口对准它,并且会不停地发朝另一个坦克发射炮弹. 发出来的炮弹会 ...
- 麒麟子Cocos Creator实用技巧二:微信名字截断(支持表情)
在我们日常游戏开发中,经常会面临将玩家名字截断的需求. 假如玩家是在我们游戏中创建的名字,那么可以简单粗暴地禁止玩家使用手机表情输入即可. 但如果我们是第三方账号登录,且使用了第三方账号的用户昵称,那 ...
- 麒麟子Cocos Creator实用技巧十:function this self ()={}详解
先说一声对不起,这篇文章本应该是昨天写的.(强行假装有很多人在等着看) 昨天聚众饮酒去了,喝醉了,可能喝了有两百多瓶吧. 有人就说啦,唉麒麟子,你怎么老爱吹牛*,动不动就两百多瓶,你真当自己是牛么. ...
- 麒麟子Cocos Creator实用技巧四:打包原生App截图白屏解决方案
大家在做棋牌App或者一些特定需求的时候,需要截取当前游戏屏幕内容保存. 我们一般是采用cc.RenderTexture来截图并保存到游戏的可写目录 有时候会遇上,截出来的图片是白屏,或者部分白屏. ...
- 麒麟子Cocos Creator 3D研究笔记四:天空盒动态更换与IBL效果
麒麟子Cocos Creator 3D研究笔记之材质IBL与天空盒动态切换 在线演示地址: https://showcase.ukylin.net/skybox/ 天空盒对于3D渲染场景来说,有着不个 ...
最新文章
- 对称加密与非对称加密
- Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)
- PAT甲级1153 Decode Registration Card of PAT :[C++题解]结构体、哈希表、排序、类似数据库查询题、好题
- 1.0 mysql的连接
- matlab如何画函数的外包络曲线,怎样在MATLAB中划出一个函数的包络线?
- hive 创建访问用户_hive创建角色并赋权
- java angularjs 跨域访问_AngularJS实现跨域请求
- word2vec -- 负采样 -- skip-gram
- 【双十一特辑】爱心代码(程序员的浪漫)-李峋
- Winamp v5.6.6.3516
- 最新区块链科普图书《区块链进化史》上市
- python查询12306余票_python命令行查询12306火车票
- 【立创EDA开源推荐】10期基于PCB彩印教程(水转印)
- 接口用例设计从哪些方面考虑
- sed命令详解及运用
- java面试题对日开发_【埃森哲Java面试】面试的是对日java的后端开发-看准网
- error LNK2001: 无法解析的外部符号 __imp__WSAGetLastError@0
- vue组件加载完成之后执行方法_vue-cli监听组件加载完成的方法
- 接口作为数据类型的应用
- c语言程序设计教程王曙燕,C语言程序设计