2009-08-11 7 views
2

J'ai une application iframe facebook où j'ai fourni une fonctionnalité de partage. J'utilise ce code:Problème dans la fonctionnalité de partage 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> 

Le problème que je suis confronté est que si je passe u à mon URL du site puis à l'intérieur titre de la boîte de partage est affiché correctement mais quand affiché à mon profil, en cliquant sur le lien me redirige vers en dehors de mon application facebook dont je ne veux pas, je veux qu'il reste à l'intérieur de la page facebook. Cependant, si je change le paramètre à quelque chose comme http://apps.facebook.com/app/ puis à l'intérieur de la boîte de partage le titre montre apps.facebook.com et quand posté sur mon profil, en cliquant dessus il me redirige dans l'application facebook mais sur un nouvel onglet.

Je veux juste que le titre soit défini en fonction de la valeur transmise et si je clique dessus dans ma page de profil, il devrait rester dans facebook.

Répondre

10

J'ai trouvé une solution à ce problème, vous devez modifier les paramètres du window.open et passer la valeur urlencode (je l'ai fait en php)

Je joins le code modifié:

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'); 

Hope this helps à d'autres qui font face au même problème.

Merci

+1

Bonne réponse. Savez-vous comment envoyer plusieurs images? Il semble que cela devrait fonctionner comme ceci '& p [images] [0] = image0 & p [images] [1] = image1', mais ce n'est pas le cas. –

+0

+1 pour urlencode –

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 

Code Ruby. Problème de chargement d'image: si l'image que vous souhaitez partager est sur votre serveur de test, assurez-vous qu'elle est accessible depuis l'extérieur de votre pare-feu.

Questions connexes