Android

Android Uygulamalarına Facebook Entegrasyonu

Mobil uygulama geliştiricileri sosyal medya ağlarının (Facebook, Twitter, Google+ vb.) API'lerini kendi mobil uygulamalarına entegre ederek, kullanıcıya kolaylıklar sağlamaktadır. Kullanıcı, mobil uygulama üzerinden sosyal medya hesaplarıyla giriş yaparak, kullanıcının duvarına yazı gönder...

Tuğba Üstündağ |

03.04.2015

Mobil uygulama geliştiricileri sosyal medya ağlarının (Facebook, Twitter, Google+ vb.) API'lerini kendi mobil uygulamalarına entegre ederek, kullanıcıya kolaylıklar sağlamaktadır. Kullanıcı, mobil uygulama üzerinden sosyal medya hesaplarıyla giriş yaparak, kullanıcının duvarına yazı gönderme, profil bilgilerini gösterme, arkadaş listesini görüntüleme gibi birçok işlevi mobil uygulama üzerinden yerine getirebiliyor.

Ben size bu yazımda, bir Android uygulamasına Facebook API'sini entegre ederek, kullanıcının Facebook hesabına giriş, duvarına yazı gönderme ve profil bilgilerini gösterme işlemlerinin nasıl yapılacağını anlatacağım.

Proje uygulayabilmek için yapılması gereken adımlar şu şekildedir:

  1. Facebook ayarları için Android uygulamasını imzalama
  2. Android uygulamasıyla Facebook uygulamasını ilişkilendirme
  3. Facebook API'sini entegre edeceğimiz Android uygulamasını oluşturma

 

Facebook ayarları için Android uygulamasını imzalama 

Android uygulamamızın Facebook programıyla iletişime geçmesini sağlamak için yapacağımız ayarlardan ilki, Android uygulamamızı imzalamaktır. Android projemizi açıp, MainActivity sınıfının onCreate metodunun içine aşağıdaki kodu koyup, uygulamayı çalıştırıyoruz:

[code]try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.tugbaustundag.facebookconnect",//Projenin paket ismini yazıyoruz
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.d("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.d("KeyHash:", e.toString());
        }[/code]

Logcat penceresinde KeyHash adındaki log bölümünde oluşturmuş olduğumuz hash bilgisini alıp, bir notepad dosyasına kaydedin. Bu hash bilgisini daha sonra Facebook uygulamasında kullanacağız.

 

Android uygulamasıyla Facebook uygulaması ilişkilendirme

Android uygulamasıyla Facebook uygulamasını ilişkilendirebilmek için, developer facebook sayfasından, yeni bir Facebook uygulaması oluşturmamız gerekir. Bu sayfayı açtıktan sonra, Add New App düğmesine tıklıyoruz.

Üstteki ekran görüntüsündeki Android simgesini seçiyoruz. Sonrasında, aşağıda gördüğünüz ekran görüntüsünde yer alan Create New Facebook App ID düğmesine tıklayacağız.

Son olarak açılan pop-up ekranda uygulama kategorisini belirleyip, Create App Id düğmesine basıyoruz. Böylelikle Ornek API Uygulama adlı Facebook uygulamamızı oluşturmuş olduk. Şimdi sırada Android uygulamamızı, Ornek API Uygulama adlı Facebook uygulamamıza tanıtmak var.

Developer Facebook sayfasının üst menüsünden My Apps'e tıklayıp, Ornek API Uygulama isimli uygulamamı seçiyorum. 

Sonra üstte görünen sol menüden Settings bağlantısını açıyorum.

Üstteki ekran görüntüsünde kırmızı kare içine aldığım "Add Platform"u seçip, açılan pencerede Android simgesini seçiyoruz. Böylelikle, Ornek API Uygulama adlı Facebook uygulamamızla Android projemizi ilişkilendirmek için asıl ayarları yapacağımız bölümü oluşturmuş olduk.

Şimdi Android projemizle ilgili bilgileri bu platforma ekleyelim. Aşağıda göreceğiniz üzere, Google Play Package Name alanına Android projemizin paket ismini; Class Name alanına, Facebook ile ilgili işlemleri yapacağımız sınıf ismini (paketismi.sınıfismi şeklinde olmalı), Key Hashes alanında daha önce oluşturduğumuz hash değerini koyduk.

"Save Changes" düğmesine tıklayarak yaptığımız ayarları kaydediyoruz.

Böylelikle Facebook uygulamamızı oluşturduk. Menüdeki "My Apps" bölümünden oluşturduğumuz uygulamayı seçtiğimizde, uygulamanın özelliklerini barındıran sayfa açılacak. Buradan Facebook App ID'yi kopyalayıp, bir notepad dosyasına kaydedin. Daha sonra Facebook App ID'sini Android uygulamasıyla Facebook uygulamasını ilişkilendirirken kullanacağız.

 

Facebook API'sini entegre edeceğimiz Android uygulamasını oluşturma

Android Studio IDE'sini kullanarak yeni bir Android uygulaması açalım. Oluşturmuş olduğumuz Android uygulamasında, kullanıcının; Facebook hesabına giriş, duvarına yazı gönderme, profil bilgilerini gösterme gibi işlemleri yapmak istiyorsak, Facebook SDk'sını projemize eklemeliyiz.

Bu işlem Android Studio'da çok basit bir şekilde yapılabilmektedir. Bunun için build.gradle dosyasını açıp, dependencies içine

[code]compile 'com.facebook.android:facebook-android-sdk:3.23.1'[/code]

kodunu eklemeniz yeterlidir.

Şimdi ise, Android programlama yaparak, kullanıcının; Facebook hesabına giriş, duvarına yazı gönderme ve profil bilgilerini gösterme işlemlerinin nasıl yapılacağını anlatacağım.

Projeyi indirerek kodları içinde yorum satırlarındaki açıklamaları okumanızı sizden rica edeceğim:

https://github.com/tugbaustundag/Android-Uygulamasinda-Facebook-Entegrasyonu

 

Sonuç

Gördüğünüz üzere, bir Android uygulamasına Facebook işlevsetini eklemek, son derece kolay bir süreç.

Bir sonraki yazımızda sizlerle uygulamamızı Twitter ile konuşturacağız. O güne dek iyi kodlamalar!

 

Kaynaklar:

http://sunil-android.blogspot.com.tr/2013/08/facebook-integration-with-android-app.html

http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/

 

Açılış görseli: Pixabay (CCO Public Domain)

Tuğba Üstündağ |

03.04.2015

Yorumlar

zzeynep
01.08.2018 - 12:15

editText den aldıgım bir veriyi fotograf ile paylaşabilirim? Text paylaşımı ile ilgi kod bulamadım

Hakan Sungur
15.11.2016 - 02:06

Merhaba,

Allah rızası için uygulamalarıma facebook reklam SDK sı yükleyecek birini arıyorum. Lütfen yardımcı olursanız sevinirim. Hangi yazılımcıya gittiysem yapamıyor. 

Mahmut Oktay
27.06.2016 - 04:49

KeyHash alamadım D/KeyHash:: android.content.pm.PackageManager$NameNotFoundException: com.islem.denemecalismasi hatası alıyorum. teşekkürler

Berk
04.03.2016 - 01:00


md.update(signature.toByteArray());

toByteArray hatası alıyorum.
Yeni başladım programlamaya çözemedim
yardımcı olurmusunuz?
Şimdiden herkese teşekkür ederim.

Cengiz Bursalioğlu
21.12.2015 - 01:36
Bende android studio kullanıyorum. Sadece getName ve getId leri veriyor facebook diğer bilgilere nasıl eriştiniz ? Graph apiyi nasıl kullandınız?
Volkan Hotur
21.12.2015 - 07:41
Merhaba, getname ve getid public profile izinlerine giriyor. default olarak bu izinle soyadi, lokasyon, cinsiyet, yas araligi gibi diger bilgiler de alinabiliyor. ben LoginManager kullandim, login manager ile once kullanacagim izinleri loginwithreadpermission methodu ile geciriyorum. sonrasinda login manager'in callback'ini cagirip, on success methodunda da graph apiyi kullaniyorum. sonra giris yapacagim yerde de graph apiden gelen response'u parse ediyorum. bu sekilde kullandim asagi yukari ben. basta da dedigim gibi, en basta bi list icinde kullanacagim izinleri belirledim, sonra login manager ile bu izinleri pass ettim. sonra da icerde alacagim bilgilerin isimlerini parametre olarak graphrequeste set ettim ("fields","id, name, gender").
Cengiz Bursalioğlu
21.12.2015 - 09:20
Merhaba bende şu şekilde bir problem oluyo; build gradle(module app ) de verdiğim dependencies içindeki compile 'com.facebook.android:facebook-android-sdk:3.23.1' kısmı FacebookSdk.init olmuyo ve callbacckmanager tanımlamasını yapamıyorum dolayısıyla yeni izinleri set edemiyorum.
Volkan Hotur
21.12.2015 - 11:52
ben facebook android sdk olarak 4.5'i kullanıyorum. 3.23.1 biraz eski bir sürüm, belki o yüzden problem çıkıyor olabilir. https://developers.facebook.com/docs/android/getting-started ki facebook'un kendi dökümantasyonunda en son 4.7 sürümü yayınlanmış. o çıkmış. dediğim gibi bende 4.5 sürümü stabil çalışıyor şu an.
Volkan Hotur
01.11.2015 - 03:04

merhaba, android studio sanırım yaz başında bazı değişiklikler yapmış, direkt olarak parseJson işlemiyle kullanıcı id, lokasyon gibi bilgileri alamıyoruz artık.  JSONObject profile = Util.parseJson(facebook.request("")); bu şekilde bilgileri parse edemiyoruz. bunun yerine nasıl bir yöntem uygulayabiliriz acaba, bilginiz var mı ? 

Sorunu çözdüm bu arada, graph api ile hallettim.

Hüsamettin
24.04.2015 - 02:16
Çok işime yaradı Teşekkürler. .
Ahmet Sen
24.04.2015 - 04:54

get profile information diyince Tugba Üstündağ'ın bilgilerini getiriyor? bir bilgisi olan var mı?

Tuğba Üstündağ
24.04.2015 - 05:08

 Arkadaşlar, övgülerniz için teşekkür ederim:)

Tuğba Üstündağ
24.04.2015 - 05:13

Ahmet , getProfileInformation metodunda ,

 //Kullanıcının user idsini kullanarak json string elde ettik
 JSONObject profile = Util.parseJson(facebook.request("642373865"));  bölümünde, örnek olarak  kendi user id'mi kullandığım için benim bilgilerim gelmesi gayet normal.Bu user id değiştrip,kendi user id ni yazmalısın.

Burhan Aras
06.04.2015 - 04:26

Çok faydalı bir makale olmuş bence. Tebrik ederim.