Połączenie aplikacji mobilnej z Facebookiem Paweł Kowalski
1. Opis kodu źródłowego W programie zawarte są dwie klasy MainActivity oraz FacebookManager. Pierwsza odpowiada za aktywność oraz tworzenie i działanie na faceookowych obiektach, druga pozwala na działanie w rozmaity sposób na facebookowego walla. Pierwszym krokiem, by móc połączyć Androida z Facebookiem jest ściągnięcie FacebookSDK, które zwyczajowo udostępnione jest pod adresem: https://developers.facebook.com/. FacebookManager Klasa korzysta z biblioteki FacebookSDK. Poniżej omówione są pola i metody tej klasy: o PERMISSIONS zawiera listę uprawnień, które aplikacja wymaga od użytkownika o getinstance() zwraca instancje klasy FacebookManager o preparemanager() przypisuje instancję klasy FacebookManager konkretnej aktywności o checkloginstatus() metoda próbuje stworzyć nową sesję uda się jej to, jeśli użytkownik wcześniej zintegrował już aplikację z Facebookiem (wywołuje metodę loginsetting()), w przeciwnym wypadku nic się nie dzieje o login() działanie podobne jak checkloginstatus(), różnica polega na tym, że w przypadku jeśli sesji nie da się zainicjować, wyświetlane jest okno dialogowe zachęcające użytkownika do integracji jego konta na Facebooku z aplikacją
o loginsetting() przypisuje odpowiednie wartości polom takim jak nazwa użytkownika, imię, nazwisko, stan logowania o requestwritepermissions() wyświetla okno dialogowe pytające użytkownika o chęć zezwolenia aplikacji na publikowanie na jego tablicy o posttowall(string message, Boolean iswelcomepost) publikowanie postu na tablicy użytkownika, możemy dowolnie zmieniać parametry postparams w zależności od potrzeb i tego, co chcemy opublikować na tablicy o welcomepost() wywołuje metodę posttowall(), publikuje powitalny wpis na tablicy użytkownika (po zintegrowaniu aplikacji z Facebookiem) o issubsetof() metoda służąca do zarządzania uprawnieniami o islogged() zwraca informacje o bieżącym stanie zalogowania użytkownika MainActivity o Inicjację połączenia rozpoczynamy od wywołania metod: FacebookManager.prepareManager(this); FacebookManager.getInstance().checkLoginStatus( ); o Metoda loginbutton() odpowiada za to, co ma się stać po kliknięciu w przycisk logowania w przypadku gdy użytkownik był wcześniej zalogowany, czy nie. Należy wywołać: FacebookManager.getInstance().login(); FacebookManager.getInstance().welcomePost(); Jeśli użytkownik nie był wcześniej połączony z Facebookiem (oczywiście powitalny post nie jest obligatoryjny), można usunąć wywołanie tej metody.
o Metoda edittext() odpowiada za publikację na tablicy wpisu zdefiniowanego w polu edittext. o Ważne, by stworzyć metodę onactivityresult, która będzie zawierać wywołanie metody: Session.getActiveSession().onActivityResult(this, requestcode, resultcode, data); To główne źródło problemów, często zapomina się o tym, a bez tego aplikacja nie nawiąże połączenia! AndroidManifest o Dodajemy tutaj następujące pola: <activity android:name="com.facebook.loginactivity"/> <meta-data android:name="com.facebook.sdk.applicationid" android:value="app_id"/> APP_ID jest to ID naszej aplikacji Facebookowej (o tym niżej). Nie można też zapomnieć o wymuszeniu dostępu przez aplikację do Internetu: android:name="android.permission.internet" /> android:name="android.permission.access_netwo RK_STATE" /> android:name="android.permission.read_phone_st ATE" /> android:name="android.permission.access_wifi_st ATE" />
android:name="android.permission.write_externa L_STORAGE" /> 2. Połączenie z aplikacją od strony Facebooka By stworzyć Facebookową natywną aplikację Android, należy po pierwsze wygenerować sygnaturę naszej aplikacji. Do tego celu nalezy użyć programu keytool (znajduje się w folderze z zainstalowaną Javą). Potrzebujemy także programu openssl, który ściągnąc można z: http://code.google.com/p/openssl-for- windows/downloads/detail?name=openssl- 0.9.8k_WIN32.zip&can=2&q= Wywołujemy następujący skrypt w linii poleceń: keytool -exportcert -alias androiddebugkey -keystore "<path-to-users-directory>\.android\debug.keystore" openssl sha1 -binary openssl base64 na przykład: keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Ravi\.android\debug.keystore" openssl sha1 - binary openssl base64 Całość powinna wyglądać mniej więcej w ten sposób:
Gdy mamy już sygnature aplikacji, należy stworzyć nowa aplikację w serwisie Facebook: https://developers.facebook.com/apps. Wpisujemy nazwę oraz namespace (nasza aplikacja będzie dostępna pod adresem http://facebook.com/nasz-namespace) Następnie w sekcji Ustawienia znajdujemy informacje o naszej aplikacji, m. in. identyfikator, który należy wkleić do pliku AndroidManifest.xml. Poniżej znajduje się przycisk "Dodaj platformę". Z listy dostepnych wybieramy "Android". Uzupełniamy pola: Package Name: nazwa androidowej paczki, np. "com.android.example" Nazwa klasy: nazwa klasy w której po raz pierwszy używamy Facebook SDK, w naszym przypadku MainActivity Key Hashes: Sygnatura wygenerowana programem keytool Zatwierdzamy zmiany i od tej chwili możemy za pomocą naszej aplikacji łączyć się z Facebookiem.