Android Uygulamaya “Facebook ile Giriş” Ekleme

Bu yazıda sizleri çok sıkmadan bir Android uygulamaya nasıl Facebook ile giriş eklenir? kısaca bahsedeceğim. Bildiğiniz üzere Facebook biz geliştiricilere birçok destek ve hizmet sunmaktadır. Bu hizmetleri Facebook Developer adresinden bulabilirsiniz. Biz bu yazıda sadece “Facebook ile Giriş” kısmını ele alacağız. Öncelikle Facebook Developer adresine gidip bir uygulama oluşturmanız gerekmektedir.

Yukarıdaki gibi uygulamanın ismi (herhangi bir isim olabilir) ve e-mail adresi gerekmektedir. İkinci bir adım olarak ise uygulamayı oluşturduktan sonra sol taraftaki panel de bulunan Settings sekmesinden Android uygulamamız için gerekli bilgileri kaydetmemiz olacak.

Nedir bu bilgiler kısaca bahsedeceğim. “Google Play Package Name” ile gösterilen kısım uygulamanızın paket adı “Class Name” ise hangi activity de giriş işlemini gerçekleştireceğiniz ve buna bağlı olarak paket altındaki sınıf adınız “Key Hashes” ise uygulamanıza ait eşsiz bir anahtar gibi düşünebilirsiniz. Bilgisayarınızın komut istemi kısmını açarak burada gösterildiği üzere gerekli kodu girip ve ardından sorulan parolaya “Android” yazarak eşsiz bir Hash Key alabilirsiniz. Bu arada unutmadan Key alabilmeniz için bilgisayarınızda OpenSSL olması gerekmektedir. OpenSSL’i buradan indirebilirsiniz.

<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />

Yukarıdaki gibi manifest dosyanıza application etiketleri arasına Facebook’un kendi geliştirmiş olduğu activity’i eklemeniz gerekmektedir. Xml tarafında

<com.facebook.login.widget.LoginButton
facebook:com_facebook_login_text="Facebook ile Giriş Yap"
android:id="@+id/btnFacebookLogin"
android:textColor="#eee"
/>

yukarıdaki gibi bir Facebook buton oluşturuyoruz. Neden bunu oluşturduk normal buton oluşturmadık diye sorarsanız Facebook’un şöyle bir cevabı var. Giriş yaparken gerçekleştirilen callback fonksiyonları bu buton üzerinden yürüyor. Ama normal buton ile yapıp hata ile karşılaşmanızı tavsiye ederim. Demek istediğimi o zaman daha iyi anlıyacaksınız.

Yukarıda gördüğünüz üzere basit bir giriş ekranı tasarladım. Eğer test cihazınızda Facebook ile giriş yaptıysanız, ikinci ekran gelmeden üçüncü ekrana geçersiniz. Benim test ettiğim cihazda Facebook yüklü olmadığından Facebook bilgilerimi de istedi. Sıra geldi Java tarafında callback metodlarını karşılamaya.

Aşağıda bir Facebook buton oluşturmayı ve gerekli callback eventlarını bu buton üzerine geçmeyi gördük. İkinci parametre olarak this dediğimiz olayı bir sonraki paragrafta daha iyi anlayacaksınız.

LoginButton btnFacebookLogin = findViewById(R.id.btnFacebookLogin);
CallbackManager callbackManager = CallbackManager.Factory.create();
btnFacebookLogin.registerCallback(callbackManager, this);

Kullandığınız activity ya da Fragment view’ına aşağıdaki interface’i implemente edelim. Burada bahsetmek istediğim olay bir interface’i Anonymous Class tipinde değil de implement şeklinde kullanmamız olacaktır. Bu birkaç kısıtlamadan bizi kurtarmaktadır.

... implements FacebookCallback<LoginResult>

Buna bağlı olarak aşağıdaki üç metod ezilecektir. Fonksiyonlardan da anlaşılacağı üzere işlevleri isimlerden de gayet açıklayıcı görünüyor. Gerekli tanımı yorum satırı olarak yaptım.

@Override
public void onSuccess(LoginResult loginResult) {
facebook_token = loginResult.getAccessToken().getToken();
//Giriş yaptığınızda facebook tarafından verilen token
}

@Override
public void onCancel() {
// Giriş ekranındayken vazgeçtiğiniz takirde gerçekleşecek olan method
}

@Override
public void onError(FacebookException error) {
Hatalı bilgi girdiğinizde ya da internet bağlantısında ya da buna benzer hatalarda gerçekleşecek olan method.
}

Bu arada uygulamanıza tabiki internet izni vermeyi unutmayınız. Yoksa neden onError’a düştü diye saatlerce uğraşırsınız. 😅

<uses-permission android:name="android.permission.INTERNET" />

Kısaca Facebook ile giriş bu kadar. Sormak istediğiniz ya da kafanıza takılan bir kısım olursa yorum yazarak bildirebilirsiniz.

Sağlıcakla. 😀