0

我有一个类似facebook按钮的问题。 在Facebook开发者中,Facebook为我们提供了3种不同的方法来将类似按钮集成到我们的应用中。在这个例子中,我使用了所有3种方法。Facebook喜欢sencha建筑师的按钮

我已经建立在煎茶建筑师触摸(Ext.Button)3个按钮。之后,我已经创建了,我传递给HTML按钮配置的3种方法基本功能:

var me = this, htmlStrBase, htmlStr, htmlStrBase1, htmlStr1, htmlStrBase2, htmlStr2;

htmlStrBase = '<div class="fb-like" data-href="https://www.facebook.com/tecnitalia?ref=ts&fref=ts" data-layout="button" data-action="like" data-show-faces="false" data-share="false"></div>'; 
htmlStrBase1 = '<iframe src="//www.facebook.com/plugins/like.php?href=https://www.facebook.com/tecnitalia?ref=ts&fref=ts&amp;width&amp;layout=button&amp;action=like&amp;show_faces=false&amp;share=false&amp;height=35&amp;appId=838403862859130" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:35px;" allowTransparency="true"></iframe>'; 
htmlStrBase2 = '<html xmlns:fb="http://ogp.me/ns/fb#"><fb:like href="https://www.facebook.com/tecnitalia?ref=ts&fref=ts" layout="button" action="like" show_faces="false" share="false"></fb:like>'; 

me.getLikebutton().setHtml(htmlStrBase); 
me.getLikebutton1().setHtml(htm 

lStrBase1); 
me.getLikebutton2().setHtml(htmlStrBase2); 

自然首先我都推出了FB.Init(用于台式机和为App):

if(Ext.os.is.Android || Ext.os.is.iOS) {

FB.init({ 
     appId  : 'xxxxxxxxxxxxx', 
     status  : true, 
     nativeInterface: CDV.FB, 
     useCachedDialog: false, 
     xfbml  : true 
    }); 

    //alert('dopo FB.init'); 
    FB.Event.subscribe('auth.statusChange', function(response) { 
     //alert('status changed'); 
    }); 

(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/it_IT/sdk.js#xfbml=1&appId=XXXXXXXXX&version=v2.0"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

} 
//Otherwise let's use the the web version 
else 
    { 
     //Wait for sdk to load 
     //alert('eseguo fbAsyncInit'); 
     window.fbAsyncInit = function() { 

      FB.init({ 
       appId  : 'XXXXXXXXXX', 
       status  : true, 
       xfbml  : true 
      }); 

      FB.Event.subscribe('auth.statusChange', function(response) { 
       //alert('status changed'); 
      }); 
     }; 

     //alert(' after fbAsyncInit e now include SDK'); 
     //Include SDK 

     (function(d, s, id){ 
      var js, fjs = d.getElementsByTagName(s)[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement(s); js.id = id; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 
    } 

最终的结果是,在桌面上,它的功能完美,但我的android应用程序尚未...我没有看到任何像按钮。

我说你过去的事情....如果我复制的直接这个3种方法在HTML按钮的配置,我可以看到我的应用程序等等按钮之一。但是我不能直接在HTML配置按钮中复制这些方法,因为每次用户登录我的应用程序时都需要更改Facebook地址。

有人能帮助我,知道在我的应用程序dinamically整合类似按钮的方法? 谢谢 Carlo

嗨Guillard。谢谢。这是功能,但我有另一个问题。在Android之后像登录它显示我一个空白页!!!!否,在桌面上使用Mozilla或Firefox。 谢谢 Carlo

回答

0

有一点让我有所不同的是,在我的面板添加Facebook脚本后,fb-root id已经就位。

在这里,我创建了一个Container与底部工具栏和另一个容器(FB-根)具有用于煎茶页面Like按钮。

Ext.create('Ext.Container', { 
    fullscreen: true, 
    html : 'My Sencha touch panel', 
    items: [ 
     { 
      docked: 'top', 
      xtype: 'titlebar', 
      title: 'Sencha Touch', 
     },{ 
      docked: 'bottom', 
      xtype: 'toolbar', 
      ui: 'light', 
      items: [{ 
       xtype: 'container', 
       id: 'fb-root', 
       width: 50, 
       height: 20 
      }] 
     } 
    ], 
    listeners: { 
     initialize : function (container) { 
      (function(d, s, id) { 
       var js, fjs = d.getElementsByTagName(s)[0]; 
       if (d.getElementById(id)) return; 
       js = d.createElement(s); js.id = id; 
       js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0"; 
       fjs.parentNode.insertBefore(js, fjs); 
      }(document, 'script', 'facebook-jssdk')); 

      var html = '<div class="fb-like" data-href="https://www.facebook.com/senchainc" data-layout="button" data-action="like" data-show-faces="false" data-share="false"></div>'; 
      container.query('toolbar container')[0].setHtml(html); 
     } 
    } 
}); 

小提琴:https://fiddle.sencha.com/#fiddle/cmm

+0

感谢吉列尔梅......你能看到我的帖子回复如下?我遇到问题 – Carlo 2014-11-03 15:22:43

+0

无需查询您的组件。只需将最后一行改为:'container.setHtml(html);'。并且请删除你的答案,这不是你应该提出进一步问题的方式。 – 2014-11-03 15:28:08

+0

嗨Guillard。谢谢。这是功能,但我有另一个问题。在Android之后像登录它显示我一个空白页!!!!否,在桌面上使用Mozilla或Firefox。谢谢 – Carlo 2014-11-09 14:33:09