Ich glaube, ich werde verrückt. Ich kann es nicht zum Laufen bringen.
Ich möchte einfach überprüfen, ob einem Benutzer meine Seite mit Javascript in einer iFrame
App gefallen hat .
FB.api({
method: "pages.isFan",
page_id: my_page_id,
}, function(response) {
console.log(response);
if(response){
alert('You Likey');
} else {
alert('You not Likey :(');
}
}
);
Dies kehrt zurück: Falsch
Aber ich bin ein Fan meiner Seite. Sollte sie nicht wahr sein?!
Antworten:
Ich riss mir auch hier die Haare aus. Ihr Code funktioniert nur, wenn der Benutzer eine erweiterte Berechtigung für das erteilt hat, was nicht ideal ist.
Hier ist ein anderer Ansatz.
Kurz gesagt, wenn Sie die
OAuth 2.0
erweiterte Option für Canvas aktivieren, sendet Facebook$_REQUEST['signed_request']
zusammen mit jeder in Ihrer Tab-App angeforderten Seite eine Nachricht. Wenn Sie diese signierte_Anforderung analysieren, können Sie einige Informationen über den Benutzer erhalten, einschließlich der Frage, ob ihm die Seite gefallen hat oder nicht.quelle
signed_request
. Dies ist ein gefährlicher Ansatz. Sie sollten es mit Ihrem Anwendungsgeheimnis vergleichen. Überprüfen Sie diese Antwort für weitere InformationenSie können (PHP) verwenden
Das wird eines von drei zurückgeben:
Ich denke, der einzige Weg, dies ohne Verwendung von Token zu erreichen, ist die gerade gepostete signierte Anfrage Jason Siffring. Mein Helfer mit PHP SDK:
quelle
Sie können dies in JavaScript wie folgt tun (Aufbauend auf der Antwort von @ dwarfy auf eine ähnliche Frage ):
Wo die Datei channel.html auf Ihrem Server nur die Zeile enthält:
Es gibt eine kleine Codeduplizierung, aber Sie bekommen die Idee. Dies öffnet ein Anmeldedialogfeld, wenn der Benutzer die Seite zum ersten Mal besucht (was nicht gerade ideal ist, aber funktioniert). Bei späteren Besuchen sollte jedoch nichts auftauchen.
quelle
Obwohl dieser Beitrag schon eine ganze Weile hier ist, sind die Lösungen keine reinen JS. Obwohl Jason feststellte, dass das Anfordern von Berechtigungen nicht ideal ist, halte ich es für eine gute Sache, da der Benutzer dies explizit ablehnen kann. Ich poste diesen Code immer noch, obwohl (fast) dasselbe auch in einem anderen Beitrag von ifaour zu sehen ist . Betrachten Sie dies als die JS-Version ohne allzu viel Liebe zum Detail.
Der Basiscode ist ziemlich einfach:
Ersetzen Sie alternativ durch
me
die richtige Benutzer-ID einer anderen Person (möglicherweise müssen Sie die folgenden Berechtigungen ändern, um dies zu tunfriends_likes
). Wie bereits erwähnt, benötigen Sie mehr als die Grundberechtigung:quelle
Ich benutze JQuery, um die Daten zu senden, wenn der Benutzer die Like-Taste drückt.
Hinweis: Sie können versteckten Eingabetext verwenden, um die ID Ihrer Schaltfläche abzurufen. In meinem Fall entnehme ich sie der URL selbst in "var fbl_id = h_fbl [4];" weil es das ID-Beispiel gibt: URL: http://mywebsite.com/post/22/some-tittle
Also analysiere ich die URL, um die ID zu erhalten, und füge sie dann in meine Datenbank in der Datei like.php ein. Auf diese Weise müssen Sie nicht nach Berechtigungen fragen, um zu wissen, ob jemand die Schaltfläche "Gefällt mir" drückt. Wenn Sie jedoch wissen möchten, wer darauf drückt, sind Berechtigungen erforderlich.
quelle