Android Uygulamasını Facebook’a Entegre Etme


Yazılım dillerinde yeterli düzeyde Türkçe kaynak olmamasından dolayı, biraz daha spesifik alanlara girdiğimizde sadece yabancı kaynaklara muhtaç kalıyoruz. Bu sebeple bugün yapacağınız Android uygulamasını nasıl Facebook’a entegre edeceğinizi işleyelim dedik:

1- Öncelikle  bilgisayarımızda en çok tercih edilen ide’lerden  Eclipse mevcut değilse buradan indiriyoruz. Android SDK’sı için de şu siteden gerekli dosyayı indirip derleyici hazır hale getiriyoruz. Önceki yazımızdan göz gezdirebileceğiniz adımları tamamladıktan sonra artık projeye başlayabiliriz.

Android Facebook

 

2- Facebook bağlantısı için gereken Facebook’un Andorid SDK’sını bu linkten indiriyoruz. Eclipse üzerinden indirdiğimiz yerdeki Facebook SDK’sını projeye import ediyoruz. File-Import-General-Existing Projects into Workspace yolunu kullanıyoruz.

facebook'u android'e ekleme

Eğer SDK’yı Eclipse’e entegre ettikten sonra klasörün üstünden kırmızı hatala görüyorsanız, Project-Clean uzantısıyla düzeltebilirsiniz.

3- Öncelikle sonraki adımlarda oluşturacağımız Facebook uygulaması için bilgisayarımızda bulunan bir hash key’e ihtiyacımız var. Buna iki yolla ulaşabiliyoruz;

İlk yol komut istemi yani cmd’yi açıp:

Windows için: 

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

OS X için: 

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

komutlarını yazdıktan sonra çıkan satırdan şifre sorarsa “android” yazıp onaylıyoruz ve bize sayı, harf, sembollerden oluşan key veriyor. 

Benim tercih ettiğim ikinci yol ise;

Oluşturduğunuz  projenin;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
//kısmından sonra aşağıdaki hash key kodunu ekliyoruz.
try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "projenizin package adresi", 
                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 (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

Programı çalıştırdıktan sonra LogCat akışına baktığımızda hashcode’umuzu görebileceğiz:

hash key facebook android uygulaması

 

4-  Şimdi developers.facebook.com adresine girerek yeni bir uygulama oluşturuyoruz.  Apps- Create a New App diyerek uygulama isim yerlerini dolduruyoruz:

facebook developer örneği

 

Uygulamayı oluşturduktan sonra Settings- Add Platform- Android uzantısını izleyip hashkey’imizi ‘Key Hashes’ alanına giriyoruz. Aynı zamanda uygulamamızın package name’ini ve class bilgilerini de giriyoruz.

Facebook hash code android

 

5- Projemizin values-strings.xml bölümüne gelerek resources kısmından app_id stringini ve facebook’ta oluşturduğumuz uygulamanın değerini add butonundan giriyoruz.

Android Facebook ile bağlama

Sonrasında AndroidManifest.xml dosyasını açıp, Permissions sekmesinden Add butonuyla “android.permission.INTERNET” değerini ekliyoruz. (meta-data olarak)

Permission Internet Android

7- Artık son düzenlemelere geldik. Şimdi res/layout dosyasından projemizin arayüzünü açıp bir TextView sürüklüyoruz.

<TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"

Src dosyasında bulunan oluşturduğumuz MainActivity.java class’ına geri dönerek öncelikle aşağıdaki model package’leri import ediyoruz:

import com.facebook.*;
import com.facebook.model.*;
import android.widget.TextView;
import android.content.Intent;

Sonra aşağıdaki oturum sürecini projeye implement ediyoruz.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

En son olarak da public void onCreate methodunun altına, aşağıda bulunan kodları ekliyoruz.

 @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Facebook Login Başlangıcı
    Session.openActiveSession(this, true, new Session.StatusCallback() {

      // oturum değişimi sonrası geri çağırım
      @Override
      public void call(Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {

          // Uygulama istek gönderimi
          Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

            // uygulama çağırımından sonra istek başlatımı
            @Override
            public void onCompleted(GraphUser user, Response response) {
              if (user != null) {
                TextView welcome = (TextView) findViewById(R.id.welcome);
                welcome.setText("Hello " + user.getName() + "!");
              }
            }
          });
        }
      }
    });
  }

 
Kodumuzda son görünüm aşağıdaki gibi olmalıdır:

 

package com.firstandroidapp;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.widget.TextView;
import com.facebook.*;
import com.facebook.model.*;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Session.openActiveSession(this, true, new Session.StatusCallback() {

@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {

Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Hello " + user.getName() + "!");
}
}
});
}
}
});
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

}

Eğer pro guard kullanıyorsanız proguard-project.txt bölümüne aşağıdaki snipi eklemelisiniz.
-keep class com.facebook.** { *; }
-keepattributes Signature

Artık uygulamamızı çalıştırıp Facebook ile bağlantıyı gerçekleştirebiliriz:

Bu slayt gösterisi için JavaScript gerekir.

 

Umarım yeterince açıklayıcı bir yazı olmuştur. Daha fazla Android örneği için sayfamızı ziyaret edebilirsiniz. Mutlu bir kodlama serüveni dileğiyle.

Bunlar da ilginizi çekebilir

Gitmeden yorumunuzu bırakın.


Time limit is exhausted. Please reload the CAPTCHA.