facebook instant games分享功能的实现

先接入facebook instant games的分享功能,调用的接口是
FBInstant.shareAsync({
intent: ‘REQUEST’,
image:base64Picture,
text: ‘X is asking for your help!’,
data: { myReplayData: ‘…’ },
}).then(function () {
Log.debug(‘分享成功’);
App.UIManager.emit(‘shareResumeGame’);
// continue with the game.
}).catch(function (error) {
Log.error(JSON.stringify(error));
});

但是这里有一个问题,就是这个image:base64Picture,这个东西怎么实现啊?怎么把图片转成base64的字符串啊?跪求大佬指点

代码:
// 截屏返回 image base6,用于 Share
getImgBase64 () {
let sp = cc.find(‘Canvas/New Sprite(Splash)’).getComponent(cc.Sprite);
let target = cc.find(‘Canvas’);
let width = 960, height = 640;
let renderTexture = new cc.RenderTexture(width, height);
renderTexture.begin();
target._sgNode.visit();
renderTexture.end();
//
let canvas = document.createElement(‘canvas’);
let ctx = canvas.getContext(‘2d’);
canvas.width = width;
canvas.height = height;
if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) {
let texture = renderTexture.getSprite().getTexture();
let image = texture.getHtmlElementObj();
ctx.drawImage(image, 0, 0);
}
else if (cc._renderType === cc.game.RENDER_TYPE_WEBGL) {
let buffer = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, buffer);
let texture = renderTexture.getSprite().getTexture()._glID;
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
let data = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
let rowBytes = width * 4;
for (let row = 0; row < height; row++) {
let srow = height - 1 - row;
let data2 = new Uint8ClampedArray(data.buffer, srow * width * 4, rowBytes);
let imageData = new ImageData(data2, width, 1);
ctx.putImageData(imageData, 0, row);
}
}
return canvas.toDataURL(‘image/png’);
}

参考: https://github.com/cocos-creator/demo-instant-games

好的,谢谢了

根据您上面的代码 跑起来 报了个t.begin is not a function 请问如何解决