麒麟子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);
});

这样做大部分情况下是没有问题的。但容易踩到两个坑

  1. 假如用户在微信中上传的头像不是jpg格式,将会显示为黑屏
  2. 假如是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也是可以正常显示的。

以上就是麒麟子在做项目的时候,解决微信头像,以及一些第三方服务器图片的最终方案。 希望能够帮助到大家。

原文地址:https://www.cnblogs.com/qilinzi/p/10759840.html

时间: 2024-10-08 19:19:49

麒麟子Cocos Creator实用技巧一:如何正确地显示微信头像的相关文章

cocos creator随笔

接触一个月cocos creator做个笔记... 1.socket.io 封装了websocket , Ajax等,故任何浏览器都可以使用socket.io建立异步连接.websocket 双向需要握手建立连接,http 单向. 短连接:一次性交换数据,如登入,创建角色等  长连接:推送 (一) socket.emit('tell one person'); socket.broadcast.emit('tell to everyone'); socket.on('I heard',funct

【COCOS CREATOR 系列教程之四】基于0.7.1先简单制作一个PAGEVIEW

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos-creator/1999.html 由于当前版本还没有发布1.0,因此还有不少组件没有发布,那么Himi也看到Cocos Creator群里有几个童鞋问起过PageView的问题,那么Himi正好借此练手,基于当前版本制作一个PageView. 本文分为两部分进行讲解: 1. 制作PageView     2. 如何使用 一. 制作

Cocos Creator—定制H5游戏首页loading界面

Cocos Creator从1.0版本发布到现在也有一年多了,按理说一些常见的问题网上都有解决方案,例如"如何自定义首页加载进度条界面"这种普遍需求,应该所有人都会遇到的,因此也有完善的解决方案才对.我在网上搜了一些文章,虽然也有讨论的帖子,但是方案都不尽人意.因此只能再次自己动手丰衣足食了,在此我总结一下我的思路和策略,分享给大家,希望后来的人少走弯路,另外这里的方案只针对H5游戏发布,其他平台可以借鉴思路自己实现. 首页加载的loading界面,官网的文档并没有提及,我是通过构建发

关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项

1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/anchor_lb/spineboy"); 2.用getComponent()方法找到相应骨骼动画节点的骨骼动画组件,并把这个对象赋值给一个var出来的新对象. 具体代码:var ske_anim_comp = spineboy_anim.getComponent(sp.Skeleton); 3.把第二点的新

cocos creator Touch事件应用(触控选择多个子节点)

最近参与了cocos creator的研究,开发小游戏,结果被一个事件坑得不行不行的.现在终于解决了,分享给大家. 原理 1.触控事件是针对节点的 2.触控事件的冒泡,是直接关系冒泡,父子可以,孙子不行,就是不能隔代冒泡 3.父节点不响应触控事件,肯定是被孩子节点遮挡了,只要孩子节点也监听一下事件,父节点就可以响应了 4.触控位置是绝对坐标,相对于整个canvas,节点位置相对于父节点,相对位置可以与绝对坐标相互转化 5.节点是否被触控到,touch start事件可以肯定被触摸到,但是一个节点

CSS3笔记和CSS实用技巧

CSS/CSS3在线手册:http://www.css119.com/book/css/   50个CSS代码片段必备:http://blog.csdn.net/holandstone/article/details/17613089   CSS规范和常用模块代码段:http://nec.netease.com/   必须熟记的30类CSS选择器:http://bbs.html5cn.org/thread-85312-1-1.html   CSS制作水平垂直居中对齐所有办法:http://www

新编辑器Cocos Creator发布:对不起我来晚了!

1月19日,由Cocos创始人王哲亲手撰写的一篇Cocos Creator新品发布稿件在朋友圈被行业人士疯狂转载,短短数小时阅读量突破五位数.Cocos Creator被誉为"注定将揭开Cocos开发世界中全新的一页",究竟它有什么魅力?下面让我们来细细阅读这篇文章. 以下为全文: 上周我在厦门的「哎哟,2016」酒会上,宣布了今年会发布一款新的编辑器.是的,今天我来了: Cocos Creator在经历了一年多的低调研发之后,今天终于发布了第一个正式对外的公测版,大家可以从 coco

Cocos Creator导出场景和预制的问题

Cocos Creator支持导出当前项目中的场景和预制为另一个项目所用:1,选择要导出的场景或者预制:2,选择要导出到的目标文件夹位置并进行可能的重新命名:3,导出一个压缩文件.zip.4,解压压缩文件.zip,然后可以拖动其中的内容到目标项目指定位置进行使用即可. 但是也有一些小问题:1,目标项目中的各种资源一般都已经规划名称和层次了,很可能上面拖动时需要分门别类地拖动各个资源文件(包括脚本文件)到新的相应的文件夹位置:2,根据需要,很可能进行必要的重命名--这个有些麻烦,有可能导致系统中的

关于Cocos Creator脚本执行顺序的几点补充

Cocos Creator开发远非初看起来那么容易,正早一些可视化开发语言,例如VB,入门很容易,但进入实战阶段,你很可能会发现问题一股脑儿出现.但是,不要怕,根本原因还在于你不熟悉它.其效率不必怀疑,而且官方的主打产品也正是它.开发中,深感官方关于Cocos Creator脚本执行顺序尚存在很多不详细或者透彻的地方:因此,本人结合最近一个时段的学习,作以下几点补充. 一,官方文档最重要 地址是:http://docs.cocos.com/creator/manual/zh/scripting/