Chyba wariuję. Nie mogę zmusić tego do pracy.
Chcę po prostu sprawdzić, czy użytkownik polubił moją stronę z javascriptem w iFrame
aplikacji.
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 :(');
}
}
);
To zwraca: Fałsz
Ale jestem fanem mojej strony, więc czy nie powinno zwrócić prawdy ?!
Odpowiedzi:
Z tego też wyrwałem sobie włosy. Twój kod działa tylko wtedy, gdy użytkownik udzielił rozszerzonych uprawnień na to, co nie jest idealne.
Oto inne podejście.
Krótko mówiąc, jeśli włączysz
OAuth 2.0
opcję zaawansowaną dla kanwy, Facebook wyśle$_REQUEST['signed_request']
wraz z każdą stroną żądaną w aplikacji karty. Jeśli przeanalizujesz to signed_request, możesz uzyskać informacje o użytkowniku, w tym o tym, czy polubił stronę, czy nie.źródło
signed_request
. To niebezpieczne podejście. Powinieneś sprawdzić to w tajemnicy swojej aplikacji. Sprawdź tę odpowiedź, aby uzyskać więcej informacjiMożesz użyć (PHP)
To zwróci jeden z trzech:
Wydaje mi się, że jedynym sposobem na osiągnięcie tego celu bez użycia tokena jest wysłanie właśnie wysłanego podpisanego_żądania Jason Siffring. Mój pomocnik używający PHP SDK:
źródło
Możesz to zrobić w JavaScript w ten sposób ( opierając się na odpowiedzi @ dwarfy na podobne pytanie ):
Gdzie plik channel.html na twoim serwerze zawiera tylko wiersz:
Jest tam małe powielenie kodu, ale masz pomysł. Spowoduje to wyświetlenie okna dialogowego logowania, gdy użytkownik po raz pierwszy odwiedza stronę (co nie jest do końca idealne, ale działa). Jednak przy kolejnych wizytach nic nie powinno się pojawiać.
źródło
Chociaż ten post jest już od dłuższego czasu, rozwiązania nie są czystym JS. Chociaż Jason zauważył, że żądanie uprawnień nie jest idealne, uważam to za dobrą rzecz, ponieważ użytkownik może je wyraźnie odrzucić. Nadal wysyłam ten kod, chociaż (prawie) to samo można zobaczyć w innym poście przez ifaour . Potraktuj to jako jedyną wersję JS bez zbytniej dbałości o szczegóły.
Podstawowy kod jest raczej prosty:
Alternatywnie, zastąp
me
właściwym ID użytkownika innej osoby (może być konieczna zmiana poniższych uprawnień, aby to zrobić, na przykładfriends_likes
) Jak wspomniano, potrzebujesz czegoś więcej niż uprawnienia podstawowe:źródło
używam jquery do wysyłania danych, gdy użytkownik naciśnie podobny przycisk.
Uwaga: możesz użyć ukrytego tekstu wejściowego, aby uzyskać identyfikator swojego przycisku. W moim przypadku biorę go z samego adresu URL w "var fbl_id = h_fbl [4];" ponieważ istnieje przykład identyfikatora: url: http://mywebsite.com/post/22/some-tittle
więc analizuję adres URL, aby uzyskać identyfikator, a następnie wstawiam go do mojej bazy danych w pliku like.php. w ten sposób nie musisz pytać o uprawnienia, aby wiedzieć, czy ktoś naciska przycisk „Lubię to”, ale jeśli chcesz wiedzieć, kto go naciska, potrzebne są uprawnienia.
źródło