我正在尝试在canvas元素中实现Google+功能 -
是否可以在不使用gapi.interactivepost.render()的情况下请求交互式帖子弹出窗口?
同样,有没有办法从JS触发gapi.auth.authorize()并将其视为用户操作? (从直接点击链接/按钮可以看出)。
答案 0 :(得分:0)
您无法在画布中呈现Google+按钮,但您可以在HTML画布上放置div,并可以在画布上呈现按钮。例如:
用于画布的HTML和按钮目标
<p>
<div id="canvasPlus" style="position:relative">
<canvas id="canvas" width="800" height="600"></canvas>
<div style = "position:absolute; top:20px; left:230px;" id="shareContainer">
<button id="ipost">Share</button>
</div>
</div>
</p>
用于在画布上呈现按钮的JavaScript
<script type="text/javascript">
(function() {
var po = document.createElement('script');
po.type = 'text/javascript'; po.async = true;
po.src = 'https://plus.google.com/js/client:plusone.js?onload=onPlusOneLoaded';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
function onPlusOneLoaded(){
var params = {
clientid: 'YOUR_CLIENT_ID',
cookiepolicy: 'single_host_origin',
scope: 'https://www.googleapis.com/auth/plus.login',
contenturl: 'https://plus.google.com/pages/',
calltoactionurl: 'https://plus.google.com/pages/',
prefilltext: 'Hello Stack Overflow',
};
gapi.interactivepost.render('ipost', params);
drawCanvas();
}
function drawCanvas(){
var ctx = document.getElementById('canvas').getContext('2d');
for (var i=0;i<25;i++){
ctx.fillStyle = "rgba(200,0,0,.5)";
ctx.fillRect (10 + 10*i, 10 + 10*i, 55, 50);
}
}
</script>
我不确定您对&#34;被视为用户操作&#34;的问题。但您可以使用API调用触发授权对话框,例如:
gapi.auth.authorize({
client_id: 'YOUR_CLIENT_ID',
cookiepolicy: 'single_host_origin',
scope: 'https://www.googleapis.com/auth/plus.login'
});
执行此操作时,您将失去在Android上执行无线安装的功能。