Aplikacje Facebook – sprawdzanie “like” dla strony

W jednym z ostatnich projektów klient zażyczył sobie sprawdzenie polubienia strony z poziomu aplikacji bez autoryzacji użytkownika. Poniżej rozwiązanie tego problemu z użyciem biblioteki Facebook C# SDK.

Całość rozwiązania sprowadza się do sprawdzenia danych SignedRequest. Pamiętaj tylko, że to rozwiązanie działa tylko i wyłącznie w kontekście Facebook’a. A więc gdy testujesz aplikację musisz odwoływać się do niej przez osadzenie na fan page’u.

Uwaga: Moja wersja bibliotek Facebook C# SDK jest odrobinę zmodyfikowana pod moje wymagania.

FacebookApp facebookApp = new FacebookApp();
facebookApp.AppId = [FacebookAppId];
facebookApp.AppSecret = [FacebookAppSecret];
facebookApp.CanvasPage = [CanvasPage];
facebookApp.CanvasUrl = [CanvasUrl];
facebookApp.SecureCanvasUrl = [SecureCanvasUrl];
facebookApp.CancelUrlPath = [CancelUrlPath];

CanvasAuthorizer authorizer = new CanvasAuthorizer(facebookApp, new HttpContextWrapper(HttpContext.Current));
if (authorizer.FacebookWebRequest != null && authorizer.FacebookWebRequest.SignedRequest != null)
{
    dynamic data = (dynamic)authorizer.FacebookWebRequest.SignedRequest.Data;
    try
    {
        if (Convert.ToBoolean(((dynamic)data["page"])["liked"]))
        {
            // lubi stronę
        }
        else
        {
            // nie polubił strony
        }
    }
    catch { }
}

W SignedRequest możemy odczytać element Json’a page a następnie sprawdzamy property liked. Ta informacja związana jest z kontekstem danej strony z której aplikacja została uruchomiona. Jeśli chcemy sprawdzić dla innej strony niestety wymagana jest autoryzacja i inna metoda sprawdzenia tej informacji.


Tags: , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

three − two =

Partnerzy