2009-08-11 62 views
2

我有一个Facebook的iframe应用程序,我已经提供了共享功能。我使用此代码:问题在Facebook共享功能

<script> 
    function fbs_click() 
    { 
     u='<?php echo $shareURL;?>'; 
     t=document.title; 
     window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436'); 
     return false; 
    } 
</script> 
<style> 
    html .fb_share_button { 
    display: -moz-inline-block; display:inline-block; 
    padding:1px 20px 0 5px; height:15px; border:1px solid #d8dfea; 
    background:url(http://b.static.ak.fbcdn.net/rsrc.php/z39E0/hash/ya8q506x.gif) 
    no-repeat top right; 
    } 
    html .fb_share_button:hover { 
     color:#b5b8d3; border-color:#295582; background:#3b5998 
     url(http://b.static.ak.fbcdn.net/rsrc.php/z39E0/hash/ya8q506x.gif) 
     no-repeat top right; text-decoration:none; 
    } 
</style> 

<a href="http://www.facebook.com/share.php?u=<url>" class="fb_share_button" onclick="return fbs_click()" target="_blank" style="text-decoration:none;">Share</a> 

我现在面临的问题是,如果我通过u到我的网站网址,然后里面的份额框的标题显示正常,但是当贴到我的个人主页上,点击链接重定向我我的Facebook应用程序之外,我不希望我希望它留在Facebook页面内。 但是,如果我将u参数更改为http://apps.facebook.com/app/之类的内容,那么在共享框中标题显示的是apps.facebook.com,当我发布在我的个人资料上时,点击它会将我重定向到facebook应用程序中,但会转到一个新选项卡上。

我只是想根据传递的值设置标题,如果我点击它在我的个人资料页面上,它应该保持在facebook内。

回答

10

我发现这个问题,你必须改变在window.open的参数和传递价值进行urlencode的解决方案(我在PHP这样做)

我附上改变的代码:

1)

<?php 
    $title=urlencode('Facebook Share Platform'); 
    $image=urlencode('imagepath'); 
    $summary=urlencode('Check This Out'); 
    $url=urlencode('http://apps.facebook.com/yourapplication'); 
    ?> 

2)

window.open('http://www.facebook.com/sharer.php?s=100&amp;p[title]=<?php echo $title;?>&amp;p[summary]=<?php echo $summary;?>&amp;p[url]=<?php echo $url; ?>&amp;&p[images][0]=<?php echo $image;?>', 'sharer', 'toolbar=0,status=0,width=626,height=436'); 

希望这有助于其他谁正面临同样的问题。

感谢

+1

很好的答案。你知道如何发送多个图像吗?它似乎应该像这样工作'&p [images] [0] = image0&p [images] [1] = image1',但它没有。 – 2011-07-04 01:35:22

+0

用于urlencode的+1 – 2013-04-05 08:55:00

1
def fb_share_knob opts={} 
    opts.each { |k,v| opts[k] = CGI.escape(v) if v.present? } 
    sharer_url = "http://www.facebook.com/sharer.php?s=100&p[url]=#{ opts[:url] }&p[title]=#{ opts[:title] }&p[summary]=#{ opts[:summary] }&p[images][0]=#{ opts[:image] }" 
    <<-FB_SHARE_LINK 
    <script type="text/javascript"> 
    function fbs_click() { 
     window.open('#{ sharer_url }','sharer','toolbar=0,status=0,width=626,height=436'); 
     return false; 
    } 
    </script> 
<a href="#{ sharer_url }" onclick="return fbs_click()" target="_blank" class="fb_share_link">Share on Facebook</a> 
FB_SHARE_LINK 
end 

Ruby代码。图片加载问题:如果您想分享的图片位于您的测试服务器上,请确保您的防火墙可以从您的防火墙外部访问。