ugrás a tartalomhoz

Facebook Like esemény kezelése

meni · 2012. Aug. 22. (Sze), 13.14
Sziasztok,

tudna valaki segíteni abban, hogy egy Facebook alkalmazásból hogyan lehetne azt megoldani, hogy ha van például egy kép, ahhoz tartozik egy Like gomb, ha a felhasználó "lájkol", akkor a falán megjelenjen a kép és egy üzenet. Néztem a Facebook Graph API doksiját, kerestem többfelé is, de nem sikerül megodanom, kezdő vagyok még FB alkalmazások terén. Ha valaki tudna segíteni bármilyen aprósággal, akkor köszönet érte.
 
1

Alkalmazás

Poetro · 2012. Aug. 22. (Sze), 13.25
Ahhoz mindenképpen egy alkalmazást kell csinálnod, hogy ilyen dolgokat megtehess. Ekkor hozzáférést kell kérned a felhasználótól a fotóihoz (user_photos), vagy inkább ahhoz, hogy a hírfolyamához (publish_stream). Ekkor az API segítségével küldeni kell egy POST üzenetet. További részletek a Graph API Photo oldalán. Ezt megteheted szerver oldalon is, illetve JavaScript-ből is. Utóbbi egyszerűbb lehet, mivel a Facebook JS interface-e szerintem jóval barátságosabb.
2

Szia, köszi a választ, az

meni · 2012. Aug. 22. (Sze), 14.01
Szia, köszi a választ, az alkalmazásom már készen van, átolvastam a doksikat is, egyelőre PHP-ból próbálkoznék, kértem jogosultságot ezekhez az objektumokhoz:

'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history, user_photos'
ezek után egy egyszerű postolást csinálnék a saját falamra, de nem sikerül. Most éppen ez a hiba:

(#200) The user hasn't authorized the application to perform this action


Egyébként egyetértek veled, szívesebben csinálnám JavaScript-ben, de azzal még kevésbé tudom elképzelni, hogy hogyan lehetne megoldani azt, hogy ha "lájkolok" valamit, akkor például kiírjam a falamra, hogy "Helló!" :)

A neten nagyon rossz leírásokat találtam, vannak akik CURL-el bűvészkedtek és egyéb dolgok. Tényleg ennyire komplikált lenne ez az egész?
3

Közben az már kiderült, hogy

meni · 2012. Aug. 22. (Sze), 14.35
Közben az már kiderült, hogy az FB.ui nem támogatja a "Like" funkciót, így arra amit én szerettem volna nem jó. A megosztást támogatja:

              FB.ui(
               {
                method: 'feed',
                name: 'Test üzenet!',
                link: 'http://www.oldalneve.hu',
                picture: 'http://www.foodsubs.com/Photos/jonagoldapple.jpg',
                caption: 'teszt',
                description: 'This was posted from a test app I created.',
                message: ''
               },...
de a kettő esemény összekötése az így nem megoldható, legalábbis a jelen tudásom szerint. Így a kliens oldali megoldás kiesett.
4

Session

Poetro · 2012. Aug. 22. (Sze), 15.52
Előbb kell egy valid session a felhasználóval. Ezt a JS API-val a következőképp teszed:
  var session;
  /**
   * Log into Facebook.
   *
   * @param {Function} callback
   *   The callback function to call after login. Will be called with the
   *   current settings object on successful login.
   * @perm {String}
   *   Comma separated list of required permissions.
   */
  function fbLogin(callback, perm) {
    if (session) {
      callback(false, settings);
    }
    else {
      FB.login(function (response) {
        if (response.status === 'connected') {
          session = response.authResponse;
          $('#fbid').val(session.userID);
          callback(false, settings);
          fbFetchUser(settings);
        }
        else {
          alert('You cannot use this feature without logging in to Facebook.');
        }
      }, { scope: perm });
    }
  }
Ha megvan a session, akkor szabadon tudsz postolni:
            FB.api('/me/feed', 'post', {
              message: "Cool Stuff",
              caption: caption,
              link: 'http://weblabor.hu/',
              access_token: session.accessToken
            }, callback);  
5

Köszi, sokat segített a kód

meni · 2012. Aug. 22. (Sze), 16.55
Köszi, sokat segített a kód amit bemásoltál, csináltam belőle egy teszt funkciót:


        var session = null;

        function testfbapi()
        {
        if (!session)
        {
            FB.login(function (response) {  
              if (response.status === 'connected') {  
                session = response.authResponse;
                 FB.api('/ALKALMAZAS_NAMESPACE/feed', 'post', {  
                  message: "Cool Stuff",  
                  caption: 'teszt',  
                  link: 'http://weblabor.hu/',  
                  access_token: session.accessToken  
                });
              $('#fbid').val(session.userID);  
              }  
              else {  
                alert('You cannot use this feature without logging in to Facebook.');  
              }  
            }, { scope: 'publish_stream, read_stream' });
         }
       }
Ez így valóban működik, arra is találtam példát a neten, hogy a Like gomb eseményét hogyan lehetne elkapni, de sajnos nem működött.

Egyik elvetemült példa:

        FB.Event.subscribe('edge.create', function(response) {
          alert('like');
        });
egy másik:

        FB.Event.subscribe('edge.create', function (href, widget) {
           //alert('You just liked ' + href);
           // alert('You just liked ' + widget);
            window.location = "http://www.google.com";
        }); 
de sajnos egyik sem működött ezek közül... Valaki esetleg tud valami működőképes megoldást erre?
6

Nem működött?

Poetro · 2012. Aug. 22. (Sze), 17.18
Mit jelent az, hogy nem működött? Mert a fentinek működnie kellene, elvégre a Facebook API ezeket a függvényeket hívja meg.
7

Van olyan eset, amikor csak

meni · 2012. Aug. 22. (Sze), 17.33
Van olyan eset, amikor csak simán semmi nem történik, ez akkor van, ha belerakom a FB init metódusába:

   window.fbAsyncInit = function () {
        FB.init({ appId: 'AppID', status: true, cookie: true, xfbml: true });

        FB.Event.subscribe('edge.create', function (href, widget) {
            window.location = "http://www.google.com";
        });
    };
így nem volt hiba, de nem is működött, pedig ennek jónak kellene lennie szerintem, de mégsem... ha pedig innen kiveszem, akkor van hibajelzés, ami érthető is és természetesen így sem működik:

ReferenceError: FB is not defined
8

Időközben, 1 napos kutatás

meni · 2012. Aug. 23. (Cs), 13.26
Időközben, 1 napos kutatás után kiderült, hogy Facebook bug áll a jelenség hátterében, már javítják. Állítólag...

Bővebben: