2010-11-17 7 views
4

en tirant mes cheveux sur celui-ci. Je suis en train d'écrire une application web connectée à Facebook qui publiera finalement des informations arbitraires sur les murs des amis sélectionnés tout au long du processus. Je suis dans les dernières étapes maintenant et espérais que l'affichage sur les murs serait simple, mais j'ai passé beaucoup trop de temps à essayer de comprendre cela maintenant, donc j'espère que quelqu'un pourra m'aider.Publier sur le mur/flux Facebook en utilisant AJAX/jQuery

Je suis en train de poster en utilisant ajax comme ceci:

$.ajax({ 
    type: 'POST', 
    url: "https://graph.facebook.com/bbeckford/feed", 
    data: {message: wallMessage, target_id: friendID, access_token: "<?= $cookie['access_token'] ?>", format: "json"}, 
    success: function(data) { alert(data); }, 
    dataType: "JSON" 
}); 

Mais je continue juste à obtenir cette erreur. « XMLHttpRequest ne peut pas charger https://graph.facebook.com/bbeckford/feed Origine http://www.secretsantasetup.com n'est pas autorisé par Access-Control-Allow-Origin. "

J'ai fait des recherches et une suggestion est de faire un proxy PHP, est-ce une option viable? Comment ferais-je cela? Est-ce que je me rapproche de ce complètement faux ??

Toute aide serait grandement appréciée, Merci, -Ben

EDIT Je veux faire en arrière-plan, par exemple l'utilisateur a sélectionné 10 amis par exemple, puis soumettre l'application bouclera à travers chaque ami et poster quelque chose sur leur mur. Est-ce possible? Merci!

EDIT 2 La console de test en bas de la page suivante fait exactement ce que je veux faire, mais il n'y a pas de code source? - http://developers.facebook.com/docs/reference/rest/stream.publish

Répondre

7

Ici, vous allez en utilisant javaScript SDK

ÉTAPE 1

Au début, votre application doit obtenir l'autorisation pour l'affichage sur le mur de l'utilisateur ou le mur d'amis de l'utilisateur.

exemple de code de Facebook: link

FB.login(function(response) { 
    if (response.session) { 
    if (response.perms) { 
     // user is logged in and granted some permissions. 
     // perms is a comma separated list of granted permissions 
    } else { 
     // user is logged in, but did not grant any permissions 
    } 
    } else { 
    // user is not logged in 
    } 
}, {perms:'read_stream,publish_stream,offline_access'}); 

publish_stream est nécessaire pour poster sur le mur d'amis de l'utilisateur ou de l'utilisateur.

ligne dont on a besoin de modifier: {perms: 'read_stream, publish_stream, offline_access'})

Pour en savoir plus sur d'autres autorisations: link

ÉTAPE 2

Taken à partir de Facebook JavaScript SDK Pages et tweaked link

FB.ui(
    { 
    method: 'stream.publish', 
    message: 'getting educated about Facebook Connect', 
    attachment: { 
     name: 'Connect', 
     caption: 'The Facebook Connect JavaScript SDK', 
     description: (
     'A small JavaScript library that allows you to harness ' + 
     'the power of Facebook, bringing the user\'s identity, ' + 
     'social graph and distribution power to your site.' 
     ), 
     href: 'http://github.com/facebook/connect-js' 
    }, 
    target_id: 'ENTER YOU FRIENDS IDS - more than one, seperate by commas', 
    action_links: [ 
     { text: 'Code', href: 'http://github.com/facebook/connect-js' } 
    ], 
    user_message_prompt: 'Share your thoughts about Connect' 
    }, 
    function(response) { 
    if (response && response.post_id) { 
     alert('Post was published.'); 
    } else { 
     alert('Post was not published.'); 
    } 
    } 

); 

ligne dont on a besoin pour modifier ou ajouter: target_id: « ENTRER VOUS AMIS IDS - plus d'un, séparé par des virgules »,

:)

2

Vous ne pouvez pas envoyer de requête ajax à un autre domaine.

Prenez simplement facebook JS SDK et faites ce que vous voulez.

+0

Je l'ai regardé à travers ce genre de choses et ne peut pas trouver un exemple décent, je peux poster sur les murs en utilisant cette méthode de manière asynchrone? – bbeckford

+0

@bbeckford: Oui, vous pouvez poster de manière asynchrone. Voici un exemple: http://developers.facebook.com/docs/reference/javascript/FB.ui – zerkms

+0

Merci, j'ai essayé, mais je ne pense toujours pas que c'est ce que je cherche. J'ai édité ma question pour mieux expliquer. – bbeckford

0

je ne sais pas où est-ce que j'ai entendu cela, mais:

jQuery.getJSON("https://graph.facebook.com/"+therequestid+"/?callback=?&access_token="+access_token,{}, 
      function(data, textStatus, jqXHR){ 
          //bla-bla 
      } 
     ); 

Devrait fonctionner, où vous devez ajouter "? callback =?" des trucs. Je ne sais pas pourquoi cela a fonctionné. Mais, tant que cela fonctionne, je resterai heureux.

+0

Cela s'appuie sur un rappel JSONP, qui est un moyen commun de contourner les limites de sécurité du navigateur Same Origin avec AJAX. Cela dit, cela ne fonctionnera que pour les requêtes GET qui retournent JSON. – Todd

Questions connexes