Facebook-like prüfen

  • Halli hallo,
    seit ca. einem halben Jahr verzweifel ich an der Facebook-API. :( ... Ich finde keine wirklichen/aktuellen Tutorials, die Documentation ist im Gegensatz zu Google-APIs grotten schlecht (finde ich) und so langsam komme ich an Punkte wo es wirklich praktisch wäre sie ein wenig zu verstehen.^^

    Mein Ziel ist, möglichst per JS & PHP ob ein User:
    1.) angemeldet ist
    2.) er eine Facebook-Seite geliked hat
    3.) falls eins davon nicht zutrifft dann soll ein like-Button auftauchen

    Dieser like-Button soll dann den Inhalt ersetzen und sobald der User auf "like" klickt wird der Button aus und der Inhalt eingeblendet. (bis hier her eigentlich alles JS) Allerdings soll auch schon beim Seitenaufruf ein Check durchgeführt werden ob der User die Seite schon geliked hat (nicht anhand einer DB sondern live) um unnötiges anzeigen und Co. zu vermeiden.

    Ich wäre über jedes Tutorial/Link oder Ähnliches sehr froh! :)Um gleich Diskussionen vorzubeugen:Ich habe schon nach Plugins gesucht und war auch fündig, allerdings fehlt allen entweder die Möglichkeit eine bestimmt URL zum liken zu bestimmen (absolut unbrauchbar) oder es fehlt der PHP-Check und der like-Button wird anhand von einer DB ausgeblendet.
    Zu dem 2. Punkt: ja ich bin mir bewusst dass dadurch evtl einige verärgert sind. Dieses Verfahren möchte ich aber zum einen nur zeitlich begrenzt für jeden Artikel ca. 2Tage aktiv haben und auch nur bei Artikeln/Fotoalben für die ich einen Auftrag aber ohne Bezahlung hatte, sprich als Gegenleistung für meine Arbeit.

    MfG Tom

  • Erstmal vorweg, ich nehme an du sprichst von einer Seitenreiter-App für eine Facebook-Page. Bei Canvas-Apps oder Website-Applikationen kannst du nicht überprüfen oder der Besucher etwas geliked hat.

    Für eine Seitenreiter-App ist das ganze sehr simpel:

    Pfadangabe zur Facebook-Klasse und deine AppID + AppSecret müssen angepasst werden.

    Kleiner Hinweis:
    Wenn in dem Seitenreiter eine eigene Navigation enthalten ist, der Besucher also innerhalb des iframes navigieren kann, dann musst du den signedRequest in die Session schreiben oder immer wieder per GET oder POST übergeben, da von Facebook nur beim ersten Laden des iframes ein sigendRequest gesendet wird, nicht mehr beim navigieren innerhalb des iframes (ist ja auch logisch).

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Ok, also der erste Teil war mir noch nicht klar - habe aber alles erfolgreich auf FB-Tabs verteilen können. :)

    Der Code hat mir sehr geholfen auch wenn ich bei einem Tab die Fehlermeldung bekomme dass die facebook-Klasse nicht existieren würde!? :/
    - selber Code wie bei dem anderen Tab (da funktioniert es einwandfrei)
    Falls du da irgendeine idee hast weshalb würde ich mich freuen. ;)

    Der Code - etwas erweitert:

    MfG Tom

  • Wenn du einen URL bei require_once angibst, dann wird die Datei auf dem Zielserver ausgeführt, nicht innerhalb deiner Applikation. Daher ist dann auch in deinem Skript die Facebook-Klasse nicht vorhanden.
    Du musst die Datei mit der Facebook-Klasse schon über eine absolute oder relative Pfadangabe auf deinem Server einbinden.

    http://www.php.net/manual/de/function.include.php

    Zitat

    Wenn "fopen-URL-Wrapper" aktiviert sind (was sie in der Standard-Konfiguration sind), kann die einzubindende Datei mit einem URL (über HTTP oder ein anderes unterstütztes Protokoll - siehe Unterstützte Protokolle and Wrappers für eine Liste unterstützter Protokolle) anstall eines lokalen Pfades eingebunden werden. Wenn der Zielserver die Zieldatei als PHP-Code interpretiert, können Variablen an die einzubindende Datei mithilfe von HTTP-GET-Query-Strings übergeben werden, obwohl dies nicht das selbe ist, wie wenn man die Datei einbindet und sie den Variablenbereich übernimmt; das Skript läuft weiterhin auf dem entfernten Server und das Ergebnis wird in das lokale Skript eingebunden.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook