0

我正在尝试在画布元素中实现 Google+ 功能 -

是否可以在不使用 gapi.interactivepost.render() 的情况下请求交互式帖子弹出窗口?

同样,有没有办法从 JS 触发 gapi.auth.authorize() 并将其视为用户操作?(从直接点击链接/按钮可以看出)。

4

1 回答 1

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>

我不确定您对“视为用户操作”的要求是什么,但您可以通过 API 调用触发授权对话框,例如:

gapi.auth.authorize({
  client_id: 'YOUR_CLIENT_ID',
  cookiepolicy: 'single_host_origin',
  scope: 'https://www.googleapis.com/auth/plus.login'
});

执行此操作时,您将无法在 Android 上执行无线安装。

于 2013-07-08T17:13:01.643 回答