FB Connect di Android

Facebook emang lagi boomingnya sekarang. Apa-apa di connectin sama facebook. Kayak Foursquare dan lain-lain juga bisa di tampilin di FB. Mungkin karena facebook sudah merajalela sampe ke pelosok desa kali ya makanya apa-apa di connectin ke FB. Sekalian bisa sebagai fasilitas buat ngiklanin product juga. Oke qt mau nyoba bagaimana develope aplikasi di android agar bisa terkoneksi ke Facebook.

1. Download Facebook Connect Android

Bisa di dapetin di sini. Kita bisa dapetin bentuk .zip dari link tadi. Silahkan di unzip “fbconnect-android.zip/api”  dan jadiin API ini menjadi .Jar dengan cara :

  • Buka Eclipse
  • File->Import->Existing Project into Workspace. Abis itu tujuan kita menjadi API ini menjadi  .Jar .
  • File->Export->JAVA->Jar File . Masukan nama yg di inginkan untuk membuat .Jar . Atau kalau gak mau ribet. Ane kasih Link nya aja : Silahkan download di sini

2. Tambahkan FBConnect.Jar kedalam project

3. Membuat Applikasi di Facebook

Sebelum memulai coding kita harus membuat aplikasi terlebih dahulu. Aplikasi ini nantinya akan di panggil di android kita dengan cara memasukan KEY dan SECRET. Cara membuat aplikasi di facebook dengan mengakse http://www.facebook.com/developers kemudian klik Set Up New Application teruskan langkahnya sampai aplikasi kita terdaftar di facebook dengan hasil akhir mendapatkan Secret & Key dari aplikasi tersebut.

4. Masukan kode beikut sebagai XML

Misal namanya facebook_android.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="wrap_content" android:layout_height="wrap_content">
	<com.codecarpet.fbconnect.FBLoginButton
		android:id="@+id/login" android:layout_width="fill_parent"
		android:layout_height="wrap_content" />

	<TextView android:id="@+id/label"
		android:layout_width="fill_parent" android:layout_height="wrap_content"/>

	<Button android:id="@+id/feedButton" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="Publish to Feed"
	/>
</LinearLayout>

Dan untuk class Activitesnya :

package com.test.exercise;
import java.util.Collections;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.codecarpet.fbconnect.FBDialog;
import com.codecarpet.fbconnect.FBFeedActivity;
import com.codecarpet.fbconnect.FBLoginButton;
import com.codecarpet.fbconnect.FBPermissionActivity;
import com.codecarpet.fbconnect.FBRequest;
import com.codecarpet.fbconnect.FBSession;
import com.codecarpet.fbconnect.FBDialog.FBDialogDelegate;
import com.codecarpet.fbconnect.FBLoginButton.FBLoginButtonStyle;
import com.codecarpet.fbconnect.FBRequest.FBRequestDelegate;
import com.codecarpet.fbconnect.FBSession.FBSessionDelegate;

public class FacebookConnect extends Activity {
 // /////////////////////////////////////////////////////////////////////////////////////////////////
 // This application will not work until you enter your Facebook
 // application's API key here:

 private static final String kApiKey = "Input Your Key Application"; // Masukan key App Facebook

 // Enter either your API secret or a callback URL (as described in
 // documentation):
 private static final String kApiSecret = "Input your secret code"; // Masukan Secret App Facebook
 private static final String kGetSessionProxy = null; // "<YOUR SESSION CALLBACK)>";
 private static final int PERMISSIONREQUESTCODE = 1;
 private static final int MESSAGEPUBLISHED = 2;
 // /////////////////////////////////////////////////////////////////////////////////////////////////

 private FBSession _session;
 private FBLoginButton _loginButton;
 private TextView _label;
 private Button _permissionButton;
 private Button _feedButton;
 private Handler mHandler;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 // TODO Auto-generated method stub
 super.onCreate(savedInstanceState);
 mHandler = new Handler();

 if (kGetSessionProxy != null) {
 _session = FBSession.getSessionForApplication_getSessionProxy(
 kApiKey, kGetSessionProxy, new FBSessionDelegateImpl());
 } else {
 _session = FBSession.getSessionForApplication_secret(kApiKey,
 kApiSecret, new FBSessionDelegateImpl());
 }

 setContentView(R.layout.facebook_connect);
 _label = (TextView) findViewById(R.id.label);

 _feedButton = (Button) findViewById(R.id.feedButton);
 _feedButton.setOnClickListener(new OnClickListener() {

 @Override
 public void onClick(View arg0) {
 publishFeed();
 }
 });

 _loginButton = (FBLoginButton) findViewById(R.id.login);
 _loginButton.setStyle(FBLoginButtonStyle.FBLoginButtonStyleWide);
 _loginButton.setSession(_session);
 _session.resume(this);

 }

 private void askPermission() {
 Intent intent = new Intent(this, FBPermissionActivity.class);
 intent.putExtra("permissions", new String[] { "publish_stream" });
 this.startActivityForResult(intent, PERMISSIONREQUESTCODE);
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 // TODO Auto-generated method stub
 super.onActivityResult(requestCode, resultCode, data);

 switch (requestCode) {
 case PERMISSIONREQUESTCODE:
 if (resultCode == 1)
 _permissionButton.setVisibility(View.INVISIBLE);
 default:
 return;
 }

 }

 private void publishFeed() {
 Intent intent = new Intent(this, FBFeedActivity.class);
 intent.putExtra("userMessagePrompt", "Example prompt");
 intent
 .putExtra(
 "attachment",
 "{\"name\":\"Facebook Connect for Android\",\"href\":\"http://code.google.com/p/fbconnect-android/\",\"caption\":\"Caption\",\"description\":\"Description\",\"media\":[{\"type\":\"image\",\"src\":\"http://img40.yfrog.com/img40/5914/iphoneconnectbtn.jpg\",\"href\":\"http://developers.facebook.com/connect.php?tab=iphone/\"}],\"properties\":{\"another link\":{\"text\":\"Facebook home page\",\"href\":\"http://www.facebook.com\"}}}");
 this.startActivityForResult(intent, MESSAGEPUBLISHED);
 }

 // /////////////////////////////////////////////////////////////////////////////////////////////////

 private class FBDialogDelegateImpl extends FBDialogDelegate {

 @Override
 public void didFailWithError(FBDialog dialog, Throwable error) {
 _label.setText(error.toString());
 }

 }

 private void checkPermission() {
 String fql = "select publish_stream from permissions where uid == "
 + String.valueOf(_session.getUid());
 Map<String, String> params = Collections.singletonMap("query", fql);
 FBRequest.requestWithDelegate(new FBHasPermissionRD()).call(
 "facebook.fql.query", params);
 }

 private class FBSessionDelegateImpl extends FBSessionDelegate {

 @Override
 public void session_didLogin(FBSession session, Long uid) {
 // we check if the user already has the permissions before
 // displaying permission button
 checkPermission();

 mHandler.post(new Runnable() {
 public void run() {
 _feedButton.setVisibility(View.VISIBLE);
 }
 });

 String fql = "select uid,name from user where uid == "
 + session.getUid();

 Map<String, String> params = Collections.singletonMap("query", fql);
 FBRequest.requestWithDelegate(new FBRequestDelegateImpl()).call(
 "facebook.fql.query", params);
 }

 @Override
 public void sessionDidLogout(FBSession session) {
 mHandler.post(new Runnable() {
 public void run() {
 _label.setText("");
 _permissionButton.setVisibility(View.INVISIBLE);
 _feedButton.setVisibility(View.INVISIBLE);
 }
 });
 }

 }

 private class FBRequestDelegateImpl extends FBRequestDelegate {

 @Override
 public void request_didLoad(FBRequest request, Object result) {

 String name = null;

 if (result instanceof JSONArray) {
 JSONArray jsonArray = (JSONArray) result;
 try {
 JSONObject jo = jsonArray.getJSONObject(0);
 name = jo.getString("name");
 } catch (JSONException e) {
 e.printStackTrace();
 }
 }
 _label.setText("Logged in as " + name);
 }

 @Override
 public void request_didFailWithError(FBRequest request, Throwable error) {
 _label.setText(error.toString());
 }
 }

 private class FBHasPermissionRD extends FBRequestDelegate {

 @Override
 protected void request_didFailWithError(FBRequest request,
 Throwable error) {
 super.request_didFailWithError(request, error);
 }

 @Override
 public void request_didLoad(FBRequest request, Object result) {
 int hasPermission = 0;

 if (result instanceof JSONArray) {
 JSONArray jsonArray = (JSONArray) result;
 try {
 JSONObject jo = jsonArray.getJSONObject(0);
 hasPermission = jo.getInt("publish_stream");
 if (hasPermission == 0) {
 mHandler.post(new Runnable() {
 public void run() {
 _permissionButton.setVisibility(View.VISIBLE);
 }
 });
 }
 } catch (JSONException e) {
 e.printStackTrace();
 }
 }
 }
 }
}

 

Referensi : http://www.mobisoftinfotech.com/blog/android/845/

Install JDK + Eclipse di Ubuntu

Terkadang agak ribet kalau mau install aplikasi di OS base on LINUX khususnya dalam hal ini UBUNTU. Beda halnya dengan windows yang memberikan kemudahan dan memanjakan bagi user dalam mengoperasikan aplikasi. Tapi justru inilah memberikan tantangan tersendiri bagi kita dalam menuntaskan permasalahan yang ada. Pengalaman sebagai developer JAVA agak sulit dalam memulai software-software yang dibutuhkan dalam proses develope JAVA application ketika pindah dari Windows Environment ke Ubuntu.  Ok, Kita mulai saja

Requirement :

  1. jdk-6u13-linux-x6oo (Download aja )
  2. eclipse-java-galileo-SR2-linux-gtk-x86_64.tar.gz

Proses :

Install JDK

  1. Download JDK bisa diakses disini
  2. kasih hak akses execute permision dengan sintaks : $chmod +x jdk-6u3-linux-i586.bin
  3. Biar rapih setiap installasi kita simpan di folder /opt/  . kita pindah file JDK ke /opt/ :  $sudo mv jdk-6u3-linux-i586.bin /opt/ . akan diminta password, masukin aja password anda.
  4. Pindah ke directory /opt . install jdk  :  $./jdk-6u3-linux-i586.bin
  5. akan muncul di directory /opt/jdk1.6.0_13. ini merupakan extract dari JDK yang kita install tadi. biar memudahkan kita buat link terhadap folder jdk1.6.0_13 dengan jdk saja. $ln  -s jdk1.6.0_13  jdk
  6. Sampai disini JDK sudah tersintall tapi belum bisa digunakan karena kita harus setting variable JAVA_HOME dan PATH. Caranya buka file $vi /etc/.bash.bashrc . Masukan script ini di baris terakhir file tersebut
  7. export JAVA_HOME=/opt/jdk
    export PATH=$PATH:$JAVA_HOME/bin

  8. Test kebenaran installasi JDK dengan mengetikan : $java -version. jika muncul kata-kata dibawah ini berarti anda sudah benar installnya :) java version “1.6.0_13″
    Java (TM) SE Runtime Environment (build 1.6.0_03-b05)
    Java HotSpot (TM) Client VM 9build 1.6.0_03-b05 mixed mode, sharing)

Install Eclipse

  1. Extract Eclipse dengan perintah : $tar -xzvf eclipse-java-galileo-SR2-linux-gtk-x86_64.tar.gz
  2. Bakalan ada folder baru namanya Eclipse hasil extract tadi. Sampai disini kita sudah berhasil menginstall eclipse di ubuntu. Cuman ada beberapa kendala lagi yang harus di hadapi.
  3. Jalankan file eclipse di Eclipse dengan double click or dengan perintah $./eclipse akan terjadi kesalahan : A Java Runtime Environment (JRE) or Java Development Kit (JDK)
    must be available in order to run Eclipse. No Java virtual machine
    was found after searching the following locations:
    /opt/eclipse/jre/bin/java
    java in your current PATH

    ini terjadi karena Eclipse tidak mengenali path JDK yang sudah kita install dan konfigarsi. Solusinya adalah di step berikutnya
  4. Edit file Eclipse.ini: $vi eclipse.ini Sebelumnya bersisi
    -startup
    plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
    –launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519
    -product
    org.eclipse.epp.package.java.product
    -showsplash
    org.eclipse.platform
    –launcher.XXMaxPermSize
    256m

    -vmargs
    -Dosgi.requiredJavaVersion=1.5
    -XX:MaxPermSize=256m
    -Xms40m
    -Xmx256m
    Menjadi
    -startup
    plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
    –launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519
    -product
    org.eclipse.epp.package.java.product
    -showsplash
    org.eclipse.platform
    –launcher.XXMaxPermSize
    256m
    -vm
    /opt/jdk/bin/java

    -vmargs
    -Dosgi.requiredJavaVersion=1.5
    -XX:MaxPermSize=256m
    -Xms40m
    -Xmx256m

  5. Sekarang Coba di jalankan $./eclipse

Previous Older Entries

Follow

Get every new post delivered to your Inbox.