请问有没有哥哥知道字节小游戏获取敏感数据后怎么解密呀,想尝试下走下流程卡在这里了
这个encryptedData 解密 看不大懂,第一次接触到这个,谢谢了
signature = sha1(${rawData}${session_key})
他给的这个解密算法在编译器里报错,要是能给个完整的流程例子就更好了
请问有没有哥哥知道字节小游戏获取敏感数据后怎么解密呀,想尝试下走下流程卡在这里了
这个encryptedData 解密 看不大懂,第一次接触到这个,谢谢了
signature = sha1(${rawData}${session_key})
他给的这个解密算法在编译器里报错,要是能给个完整的流程例子就更好了
只要头像和昵称不用后端解密啊,是你直接调用该方法出问题的吧,需要先走用户授权
咦神奇,那应该就是我调用错了。好嘞谢谢老哥,我去试试
login() {
this.tt = window['tt'];
this.tt.login({
force: true,
success: (res) => {
console.log('login 调用成功res.code ',res.code);
this.tt.getUserInfo({
withCredentials: true,
// withRealNameAuthenticationInfo: true,
success: (suc) => {
console.log(`getUserInfo`, suc.userInfo);
if(suc && suc.userInfo && suc.userInfo.avatarUrl && suc.userInfo.nickName){
let url = suc.userInfo.avatarUrl;
let name = suc.userInfo.nickName;
console.log("登录获得的用户信息: ", url, name);
cc.game.emit(Consts.EVENT_KEYS.REFRESH_HEAD);
}
},
fail(res) {
console.log(`getUserInfo 调用失败`, res.errMsg);
},
});
},
fail: (res) => {
console.log(`login 调用失败`, res);
},
})
}
啊啊啊多谢多谢。我已经调用成功啦,只是遇到一个问题,就是远程加载的头像是.image,cocos引擎识别不了,但我发现输入网址预览时把.image换成.png也能读取到图片,我的想法就是 对获取到的字符串地址进行操作,请问还有什么其他办法嘛 
要本地显示头像是吧
就是本地加载字节用户头像嘛,使用下面的方法,第一个传sprite组件,第二个传返回的url
setSpriteFrame(spr: cc.Sprite, res: string | cc.Texture2D | cc.SpriteFrame) {
if (!spr || !res) {
return;
}
if (res instanceof cc.Texture2D) {
spr.spriteFrame = new cc.SpriteFrame(res);
} else if (res instanceof cc.SpriteFrame) {
spr.spriteFrame = res;
} else if ('string' === typeof res) {
if (0 === res.indexOf('http') || 0 === res.indexOf('//')) {//网络资源
//使用字节的头像下载功能,
const image = window['tt'].createImage();
image.src = res;
image.width = 160;
image.height = 160;
image.onload = (res) => {
let canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
let ctx = canvas.getContext('2d');
ctx.drawImage(image, 100, 200, 200, 200);
let node = new cc.Node();
let sprite = node.addComponent(cc.Sprite);
let sf = new cc.SpriteFrame();
let texture = new cc.Texture2D();
texture.initWithElement(image);
sf.setTexture(texture);
spr.spriteFrame = sf;
}
} else {
cc.resources.load(res, cc.SpriteFrame, (err: Error, asset: cc.SpriteFrame) => {
if (err) {
cc.error(err);
return;
}
spr.spriteFrame = asset;
});
}
}
}
你写的好全呀,还在认真琢磨中,3.6版本有点不一样
setSpriteFrame(spr: Sprite, res: string | Texture2D | SpriteFrame) {
if (!spr || !res) {
return;
}
if (res instanceof Texture2D) {
let sf = new SpriteFrame();
sf = spr.spriteFrame;
sf.texture = res
spr.spriteFrame = sf
} else if (res instanceof SpriteFrame) {
spr.spriteFrame = res;
} else if ('string' === typeof res) {
if (0 === res.indexOf('http') || 0 === res.indexOf('//') || 0 === res.indexOf('https')) {//网络资源
//使用字节的头像下载功能,
const image = window['tt'].createImage();
image.src = res;
image.width = 160;
image.height = 160;
image.onload = (res) => {
let canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
let ctx = canvas.getContext('2d');
ctx.drawImage(image, 100, 200, 200, 200);
// let node = new Node();
// let sprite = node.addComponent(Sprite);
let sf = new SpriteFrame();
let texture = new Texture2D();
texture.image = image;
sf.texture = texture;
spr.spriteFrame = sf;
}
} else {
resources.load(res, SpriteFrame, (err: Error, asset: SpriteFrame) => {
if (err) {
console.error(err);
return;
}
spr.spriteFrame = asset;
});
}
}
}
通过res获取到的远程资源地址:
https://p9-passport.byteacctimg.com/img/mosaic-legacy/3796/2975850990~300x300.image
this.setSpriteFrame(touxiang, remoteUrl)
读取出来头像一直是空的
o .我给的是2.4.x的。3.0以上改改再用
https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/drawing/picture/tt-create-image/
朋友字节建议用createImage方法去创建用户头像哈
朋友,我想请问下 这个nitWithElement()是什么意思呀

我这样改好像不对

卡在了HTMLImageElement到Node_Sprite.spriteFrame这一步了

w我找到了

那按道理应该没错呀
let texture = new Texture2D();
texture.image = img;
let sf = new SpriteFrame();
sf.texture = texture;
sf.packable = false;
sprite!.getComponent(Sprite).spriteFrame = sf;
还是不行 谢谢谢谢,周末愉快!
等下周一再来看看了
周末愉快 
biu~~