主游戏以后微信获取不到自己昵称和头像了

主游戏以后微信获取不到自己昵称和头像了,自己的昵称在主游戏里都获取不到了。。。还有头像,这可怎么弄呢?。。。
https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1650183953&docid=0000a26e1aca6012e896a517556c01

小程序与小游戏获取用户信息接口调整,请开发者注意升级。 官方
微信团队 04月15日 109

为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息:

一、小程序:

1、使用 button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。

详情参考文档:

https://developers.weixin.qq.com/miniprogram/dev/component/button.html

2、使用 open-data 展示用户基本信息。

详情参考文档:

https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html

二、小游戏:

1、使用用户信息按钮 UserInfoButton。

详情参考文档:

https://developers.weixin.qq.com/minigame/dev/document/open-api/user-info/wx.createUserInfoButton.html

2、开放数据域下的展示用户信息。

详细参考文档:

https://developers.weixin.qq.com/minigame/dev/document/open-api/data/wx.getUserInfo.html

请各位开发者注意及时调整接口。

这不是说,可以做一个按钮吗…

按钮是可以,但是获取不到昵称,头像的url地址了

是在cocos工程主域中,直接调用wx.createUserInfoButton这个api么
,为什么我这边这个按钮没有显示

可以了,原来必须在真机上调试,才能显示,微信开发工具不能显示这个按钮,真坑爹

您好啊,获取了 url 究竟怎么才能在游戏中显示啊?求教。

@ExiaGo3

加载头像url,返回texture,创建node,给node添加sprite组件,设置sprite的spriteframe,把node加到场景的节点上。

代码:
cc.loader.load({
url: avatar,
type: ‘jpg’
}, function (err, texture) {
if (err) {
console.log('加载玩家头像err === ', err);
return;
}
texture.width = 96;
texture.height = 96;
var node = new cc.Node(‘Sprite’);
var sp = node.addComponent(cc.Sprite);
sp.spriteFrame = new cc.SpriteFrame(texture);
node.parent = this.parentNode;
})

请问怎么样在Creator中使用wx.createUserInfoButton啊?

@毕兹卡XF

直接用微信小游戏文档这个api说明下的代码就可以啊。

let button = wx.createUserInfoButton({
type: ‘text’,
text: ‘获取用户信息’,
style: {
left: 10,
top: 76,
width: 200,
height: 40,
lineHeight: 40,
backgroundColor: ‘#ff0000’,
color: ‘#ffffff’,
textAlign: ‘center’,
fontSize: 16,
borderRadius: 4
}
})
button.onTap((res) = > {
console.log(res)
})

调整 left: 10,
top: 76,
width: 200,
height: 40,这几个值修改坐标即可,

只是开发者工具中是不能显示的,扫码手机上运行就能显示了

,点击就能获得微信个人信息。

感谢老兄的解答,但是我之前就是把小游戏文档中的代码加在了 场景加载 的函数onLoad ()中,小程序开发工具中提示:

TypeError: wx.createUserInfoButton is not a function

谢谢回复,我有点不是很理解,我是这样做的,我在场景中手动创建了一个空节点 node ,命名为 avatar , 且添加上了 sprite, 然后我是这样写的


properties: {
avatar: {
default: null,
type: cc.Sprite,
},

avatar 是 login 和 getUserInfo 后获取的 self 就是同时将获取用户信息的 this 传入

getAvatar: function (avatar, self) {
console.log(avatar)
cc.loader.load({
url: avatar,
type: ‘jpg’
}, function (err, texture) {
console.log(“avatar ==========”, err, texture)
if (err) {
console.log('加载玩家头像err === ', err);
return;
}
texture.width = 96;
texture.height = 96;
// var node = new cc.Node(‘Sprite’);
// var sp = node.addComponent(cc.Sprite);
var sp = self.avatar;
sp.spriteFrame = new cc.SpriteFrame(texture);
// node.parent = this.parentNode;
})
}
接着头像才出现,我不理解的地方是,上面注释掉的代码,应该是怎么样才能新建出一个 sprite ,直接插入我的场景中?谢谢。


@毕兹卡XF

微信开发者工具–右上‘详情’–调试基础库。应该要选较高的版本,这个api是新出的。
检查下你的开发者工具是不是最新版本,新版本才会有高版本的调试基础库。

@ExiaGo

var node = new cc.Node(‘Sprite’);
var sp = node.addComponent(cc.Sprite);
node.parent = this.parentNode;
这三行代码就是动态创建一个节点,然后加到场景中啊。(> 我在场景中手动创建了一个空节点 node ,命名为 avatar , 且添加上了 sprite。你的这些操作已经完成上面三行代码的工作了)

self.avatar 你的这个对象已经存在,就不需要动态创建,
self.avatar.spriteFrame = new cc.SpriteFrame(texture);你这样直接绑定纹理对象就对了。

抱歉才回复您,谢谢,我还得多加学习呀。

:smile:

cc.loader.load

微信这个好坑的,我们的排行榜有需求要突出显示自己的排行和分值,开放数据域的获取朋友列表接口有返回openId,但是获取自己的信息返回的openId值是"selfOpenId"!!!导致不能精确判断列表里面哪个是自己。

请问怎么进游戏的时候就默认点击这个按钮啊,现在加上了每次进游戏都要点一次授权

我用wx.createUserInfoButton创建按钮了,也拿到信息了,可以切换到下一场景的时候那个按钮还在啊。。。怎么把它删掉啊?

wx.getUserInfo(OBJECT) 这个可以吧