Android Facebook Login ve Facebook Share

Android Facebook Login ve Facebook Share

Merhaba arkadaşlar,  Bugün dersimizde sizlere android uygulamamıza, facebook entegrasyonunu nasıl yapacağımızı anlatacağım. Sosyal ağların kendi API lerini kullanarak, mobil uygulamamıza entegrasyonu sağladığımız zaman , kullanıcıya büyük bir avantaj ve kolaylık sağlamış oluruz. Uygulama içinde sosyal ağları kullanarak ,bu sosyal ağlara giriş yapabilir, paylaşımda bulunabilir , profil bilgilerini görüntüleyebilir ve bunlar gibi bir çok fonksiyonu yerine getirebiliriz. Öncelikle nereden başlamalıyız adım adım bakalım;

İlk olarak android uygulamamızın, facebook ile iletişime geçmesi için bir KeyHash oluşturmamız gerekiyor. Bunu ,aşağıdaki kodu yapıştırıp uygulamanızı çalıştırdığınız anda LogCat çıktısına bakarak alabilirsiniz. Burada dikkat etmeniz gereken unsur, getPackageInfo kısmında kendi projenizin paket ismini yazmanızdır. LogCat çıktısından aldığınız KeyHash değerini bir yere not edin çünkü birazdan kullanmamız gerekecek.

try {
PackageInfo info = getPackageManager().getPackageInfo(“com.mobilhanem.loginshareexample”, PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance(“SHA”);
md.update(signature.toByteArray());
Log.e(“MY KEY HASH:”, Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

try {

            PackageInfo info = getPackageManager().getPackageInfo(“com.mobilhanem.loginshareexample”, PackageManager.GET_SIGNATURES);  

            for (Signature signature : info.signatures) {

                MessageDigest md = MessageDigest.getInstance(“SHA”);

                md.update(signature.toByteArray());

                Log.e(“MY KEY HASH:”, Base64.encodeToString(md.digest(), Base64.DEFAULT));

            }

        } catch (PackageManager.NameNotFoundException e) {

 

        } catch (NoSuchAlgorithmException e) {

 

        }

Daha sonra yapmamız gereken, developer facebook sayfasına girip facebook uygulamamız ile ilişkilendirmeyi yapmaktadır. Siteye girince, Add a New App segmesine tıklıyoruz, karşınıza hangi platformda facebook uygulamasını yaratmak istediğinizi soran bir sayfa gelecektir oradan Android segmesine tıklıyoruz.

Platformumuzu belirlediğimize göre, karşımıza gelen sayfadan android uygulamamızın ismini veriyoruz, ben android uygulamasını yaratırken LoginShareExample ismini vermiştim bu yüzden aşağıdaki resimde de göreceğiniz gibi aynı ismi ilgili yere yazıp, Create New Facebook App ID segmesine tıklıyoruz. (Not: Önceden oluşturduğum için LoginShareExample ismi altta çıkıyor fakat siz anlattığım şekilde uygulama ismini buraya yazınız. Projeyi önceden hazırlayıp, test edip dersi sonradan yayınladığım için böyle bir durum söz konusudur o yüzden kafanız karışmasın )

Facebook Id

 

Facebook App Id oluşturmak için, aşağıdaki resimde de gördüğünüz gibi kategori kısmından istediğimiz alanı seçip Create App ID butonuna tıklıyoruz.

Facebook Category

Şimdi yapmamız gereken yine developer facebook sayfasına girip, üst kısımda yer alan My Apps kısmından, uygulamaya vermiş olduğumuz ismi seçiyoruz. Aşağıda gördüğünüz gibi uygulamamızda kullanmamız gereken bir App Id yi oluşturmuş olduk.

Dashboard Facebook

Yine aynı sayfada, sol kısımda gördüğünüz gibi Settings segmesine tıklıyoruz, yaratmış olduğumuz app id ile ilgili detaylar kısmı karşımıza gelecektir.

Add Platform

Daha sonradan yukarıdaki şekilde gördüğünüz gibi Add Platform yazan yere tıklayarak ilişkilendirme işlemine devam ediyoruz. Karşımıza gelen ekranda yeniden platform bilgisini seçmemiz gerekiyor aşağıdaki şekilde gördüğünüz gibi Android segmesine tıklıyoruz.

Select Platform Android

Şimdi android projemizle ilgili önemli bilgileri ,aşağıdaki şekilde gördüğünüz gibi ilgili alanlara yazmamız gerekiyor. Google Play Package Name kısmına android projemizin paket ismini yazıyoruz. ( Android uygulamamıza girip AndroidManifest.xml kısmından, package ismine ulaşabilirsiniz ), Class Name alanına ise Facebook entegrasyonunu yapacağınız sınıf ismini vermeniz gerekmektedir. ( Uygulamamda ki sınıf ismi MainActivity olduğu için öle yazdım ) ve son olarak Key Hashes alanına yukarıda anlattığım ve sonradan kullanacağımı söylediğim KeyHash değerini yazıyoruz.

Facebook Android Properties

Bu işlemleri dikkatli bir şekilde yaptıktan sonra, girmiş olduğumuz değerleri kaydetmek için yukarıda ki şekilde görüldüğü gibi Save Changes butonuna tıklıyoruz. Bu ilişkilendirme işlemini böylelikle tamamlamış olduk ve artık kodlama kısmına geçebiliriz. Yine aynı sayfada, sol tarafta yer alan menüde Dashboard kısmına tıkladığımızda uygulamamızda kullanacağımız olan ilişkilendirmeyi göreceksiniz. Kodlama kısmında ayrıca burada yer alan App Id yi de kullanmamız gerekecek.

Şimdi kodlama kısmında yapılacak aşamaların neler olduğundan bahsedelim. İlk olarak Facebook SDK yapılandırma işlemini anlatacağım daha sonradan Facebook App ID yapılandırma işlemini anlatacağım.

———————————————————————————————————————————

 1- FACEBOOK SDK YAPILANDIRMA

Android uygulamamızı açıyoruz ve build.gradle kısmına aşağıdaki kodu yapıştırıyoruz.

repositories {
mavenCentral()
}

repositories {

        mavenCentral()

    }

Şimdi ise kullanıcının facebook a giriş yapabilmesi, duvarında paylaşımda bulunabilmesi gibi işlemleri gerçekleştirebilmek için uygulamamıza Facebook SDK yı eklememiz  gerekmektedir.  Android Studio IDE sini kullanarak Facebook entegrasyonu dersini hazırladım ve Facebook SDK yı uygulamamıza nasıl import edildiğine bakalım. Aşağıdaki kod blogunu build.gradle daki dependencies içine yapıştırmanız gerekiyor.

compile ‘com.facebook.android:facebook-android-sdk:4.0.0’

compile ‘com.facebook.android:facebook-android-sdk:4.0.0’

Bu iki aşamayıda tamamladığımıza göre build.gradle kısmının tam olarak nasıl gözüktüğüne bakalım;

apply plugin: ‘com.android.application’

android {
compileSdkVersion 21
buildToolsVersion “21.1.2”

repositories {
mavenCentral()
}

defaultConfig {
applicationId “com.mobilhanem.loginshareexample”
minSdkVersion 18
targetSdkVersion 21
versionCode 1
versionName “1.0”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
}

dependencies {
compile fileTree(include: [‘*.jar’], dir: ‘libs’)
compile ‘com.android.support:appcompat-v7:22.0.0’
compile ‘com.facebook.android:facebook-android-sdk:4.0.0’
//compile project(‘:facebook’)

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

apply plugin: ‘com.android.application’

 

android {

    compileSdkVersion 21

    buildToolsVersion “21.1.2”

 

    repositories {

        mavenCentral()

    }

 

    defaultConfig {

        applicationId “com.mobilhanem.loginshareexample”

        minSdkVersion 18

        targetSdkVersion 21

        versionCode 1

        versionName “1.0”

    }

    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’

        }

    }

}

 

dependencies {

    compile fileTree(include: [‘*.jar’], dir: ‘libs’)

    compile ‘com.android.support:appcompat-v7:22.0.0’

    compile ‘com.facebook.android:facebook-android-sdk:4.0.0’

    //compile project(‘:facebook’)

 

}

Facebook SDK yı kullanmadan önce tanımlamamız gerekiyor bunun için, ilgili activity mizin onCreate fonksiyonunun içine bunu yazıyoruz FacebookSdk.sdkInitialize(getApplicationContext()); daha iyi anlayabilmeniz için aşağıdaki koda bakınız. (Not: Bu fonksiyonu kullanabilmek için

 import com.facebook.FacebookSdk;  tanımlamayı unutmayın )

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
}

@Override

public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     FacebookSdk.sdkInitialize(getApplicationContext());

}

Facebook SDK işlemlerini tamamladık.

————————————————————————————————————————————-

————————————————————————————————————————————

2- FACEBOOK APP ID YAPILANDIRMA

Şimdi Facebook ID yi uygulamamıza eklememiz gerekiyor bunun için şu adımları gerçekleştirelim:

*  Android projemizden   res/values/strings.xml açalım.

* Facebook ID yi kullanabilmek için bir string ismi belirleyelim. Ben projede facebook_app_id ismini verdim. Aşağıda gördüğünüz gibi Facebook ID yi yapıştırıyoruz.


LoginShareExample

Hello world!
Settings
1050637191632733

    <string name=“app_name”>LoginShareExample</string>

 

    <string name=“hello_world”>Hello world!</string>

    <string name=“action_settings”>Settings</string>

    <string name=“facebook_app_id”>1050637191632733</string>

</resources>

*  AndroidManifest.xml e internet iznini almamız gerekiyor ve aşağıdaki kodu yapıştırıyoruz.

<usespermission android:name=“android.permission.INTERNET”/>

* Yine AndroidManifest.xml de application tagları arasına aşağıdaki kodu yapıştırıyoruz.

<metadata

            android:name=“com.facebook.sdk.ApplicationId”

            android:value=“@string/facebook_app_id” />

Böylece, Facebook App ID işlemlerini de tamamladık.

————————————————————————————————————————————–

Daha sonra AndroidManifest.xml e aşağıdaki kodu yapıştırmamız gerekiyor. Facebook Login yada Facebook Share işlemlerini kullanabilmek için.

<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” />

AndroidManifest.xml dosyamızın tüm haline bakacak olursak aşağıdaki gibidir. Bütün aşamaları tek tek anlatmaya çalışıyorum dersimizin en başından itibaren okuyup yapmaya çalışırsanız eğer, daha iyi anlarsınız ayrıca, android uygulamamızın kaynak kodlarını da koyacağım, kodu indirip inceleyebilirsiniz karar sizin.






1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

xml version=“1.0” encoding=“utf-8”?>

<manifest xmlns:android=“http://schemas.android.com/apk/res/android”

    package=“com.mobilhanem.loginshareexample” >

 

    <application

        android:allowBackup=“true”

        android:icon=“@drawable/home_icon”

        android:label=“@string/app_name”

        android:theme=“@style/AppTheme” >

        <activity

            android:name=“.MainActivity”

            android:label=“@string/app_name” >

 

            <intentfilter>

                <action android:name=“android.intent.action.MAIN” />

 

                <category android:name=“android.intent.category.LAUNCHER” />

            </intentfilter>

        </activity>

 

         <provider

            android:name=“com.facebook.FacebookContentProvider”

            android:authorities=“com.facebook.app.FacebookContentProvider1050637191632733”

            android:exported=“true”/>

 

        <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” />

 

        <metadata

            android:name=“com.facebook.sdk.ApplicationId”

            android:value=“@string/facebook_app_id” />

 

    </application>

 

    <usespermission android:name=“android.permission.INTERNET”/>

 

</manifest>

 

Facebook Login işleminin nasıl gerçekleştiğine bakalım. Login işlemini iki şekilde gerçekleştirebiliriz ; LoginButton sınıfını kullanarak yada LoginManager sınıfını kullanarak.

Şimdi iki sınıfın ne farkı var diyeceksiniz.. LoginButton sınıfı bize UI (User Interface) özelliğini kullanarak giriş yapabilmeye olanak sağlamıştır. LoginManager sınıfı ise, UI öğesini kullanmadan giriş yapabilmeyi sağlamaktadır. Görsellik olduğu için ve dersi daha iyi anlayabilmek açısından LoginButton sınıfını kullanmayı tercih ettim. Şimdi ilgili activity mizin layout dosyasına girelim ve xml kısmına, bahsettiğim gibi LoginButton sınıfını kullanabilmek için Facebook un kendi Login buton bileşenini entegre edelim. com.facebook.login.widget.LoginButton entegre edelim. Android uygulamamın layout kısmının bütününe bakmak istersek aşağıda ki gibi olacaktır.

activity_main.xml

Yorum Yap
0 Yorum yapan