Tích hợp Facebook trong Android




Android cho phép ứng dụng của bạn kết nối tới Facebook và chia sẽ dữ liệu hoặc bất cứ loại cập nhật nào trên Facebook. Chương này trình bày về cách tích hợp Facebook vào trong ứng dụng.

Có hai cách để bạn có thể tích hợp Facebook và chia sẻ dữ liệu từ ứng dụng, đó là: −

  • Facebook SDK
  • Intent Share

Tích hợp Facebook SDK

Đây là cách đầu tiên để kết nối với Facebook. Bạn phải đăng ký ứng dụng và tiếp đó nhận một số Facebook ID, và sau đó bạn phải tải Facebook SDK và thêm nó vào project. Các bước được liệt kê như sau:

Tạo app signature

Bạn phải tạo một Key signature, nhưng trước khi tạo nó, đảm bảo bạn đã cài đặt SSL, nếu không bạn cần tải SSL từ <đây>.here.

Bây giờ mở dòng nhắc lệnh và tới jre folder (một java folder). Tới đây bạn cần gõ lệnh thật chính xác. Bạn phải thay thế path bên trong "your path" với keystore mà bạn có thể tìm thấy trong Eclipse bằng việc chọn Window tab > Preferences tab và sau đó chọn tùy chọn build dưới android từ bên trái.

keytool -exportcert -alias androiddebugkey -keystore "your path" | openssl sha1 -binary | openssl base64

Sau khi Enter, bạn sẽ được nhắc về password. Cung cấp password và sao chép key mà đã được cung cấp cho bạn. Như sau: −

Android Facebook

Đăng ký ứng dụng

Bây giờ tạo một ứng dụng Facebook mới tại developers.facebook.com/apps và điền tất cả thông tin. Như sau: −

Android Facebook

Bây giờ tới khu vực Native Android App và điền tên project, tên lớp, và dán Key Hashes mà đã sao chép trong bước 1. Như sau: −

Android Facebook

Nếu mọi thứ là ổn, bạn sẽ nhận một App ID bí mật. Chỉ cần sao chép ID đó và lưu ở đâu đó. Như sau:−

Android Facebook

Tải SDK và tích hợp nó

Tải Facebook SDK tại đây. Nhập nó vào trong Eclipse. Sau khi đã nhập, nhấn chuột phải vào Facebook project và chọn properties. Chọn android > add button > facebook sdk > ok.

Tạo ứng dụng đăng nhập Facebook

Sau khi hoàn thành mọi thứ, bạn có thể chạy các ví dụ mẫu mà đi kèm với SDK hoặc tạo ứng dụng riêng cho mình. Để đăng nhập, bạn cần gọi phương thức openActiveSession . Cú pháp là: −

// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
   
   // callback when session changes state
   public void call(Session session, SessionState state, Exception exception)
   {
      if (session.isOpened()) {
         
         // make request to;2 the /me API
         Request.executeMeRequestAsync(session, new Request.
         GraphUserCallback() {
         
            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
               
               if (user != null) {
                  TextView welcome = (TextView) findViewById(R.id.welcome);
                  welcome.setText("Hello " + user.getName() + "!");
               }
            }
         });
      }
   }
}

Intent share

Intent Share được sử dụng để chia sẽ dữ liệu giữa các ứng dụng. Trong tình huống này, chúng ta không xử lý SDK Stuff, nhưng để cho ứng dụng Facebook xử lý nó. Chúng ta đơn giản chỉ gọi ứng dụng Facebook và truyền dữ liệu để chia sẻ. Theo cách này, chúng ta có thể chia sẻ mọi thứ trên Facebook.

Android cung cấp Intent Library để chia sẻ dữ liệu giữa các Activity và App. Để sử dụng nó như là Intent Share, chúng ta phải xác định kiểu của Share Intent là Cú pháp như sau: ACTION_SEND. Cú pháp như sau: −

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);

Kế tiếp, bạn cần định nghĩa kiểu dữ liệu để truyền, và sau đó là truyền dữ liệu đó. Cú pháp như sau:−

shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello, from tutorialspoint");
startActivity(Intent.createChooser(shareIntent, "Share your thoughts"));

Ngoài các phương thức trên, bảng dưới liệt kê một số phương thức cho phép xử lý Intent. −

Stt Phương thức & Miêu tả
1 addCategory(String category)

Phương thức này thêm một Category mới tới Intent

2 createChooser(Intent target, CharSequence title)

Tạo một ACTION_CHOOSER Intent

3 getAction()

Phương thức này thu nhận Action chung để được thực hiện, chẳng hạn như ACTION_VIEW

4 getCategories()

Phương thức này trả về tập hợp tất cả Category trong Intent và scale event hiện tại

5 putExtra(String name, int value)

Phương thức này thêm dữ liệu đã được kế thừa tới Intent

6 toString()

Phương thức này trả về một chuỗi chứa một miêu tả ngắn gon, con người có thể đọc được của đối tượng này

Ví dụ

Ví dụ sau minh họa sự sử dụng của IntentShare để chia sẻ dữ liệu trên Facebook. Nó tạo một ứng dụng cơ bản cho phép bạn chia sẽ một số text trên Facebook.

Sau đây là nội dung của Main Activity file đã được sửa đổi: MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

import android.graphics.Typeface;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.FileNotFoundException;
import java.io.InputStream;
import static java.lang.System.currentTimeMillis;

public class MainActivity extends ActionBarActivity {
   private ImageView img;
   
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      img=(ImageView)findViewById(R.id.imageView);
      Button b1=(Button)findViewById(R.id.button);
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            Uri screenshotUri = Uri.parse("android.resource://comexample.sairamkrishna.myapplication/*");
            
            try {
               InputStream stream = getContentResolver().openInputStream(screenshotUri);
            }
            
            catch (FileNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            
            sharingIntent.setType("image/jpeg");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
            startActivity(Intent.createChooser(sharingIntent, "Share image using"));
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

Bạn sửa đổi nội dung của res/layout/activity_main.xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp"
      android:text="Facebook share " />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true"
      android:src="@drawable/logo"/>
   
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Share"
      android:id="@+id/button"
      android:layout_marginTop="61dp"
      android:layout_below="@+id/imageView"
      android:layout_centerHorizontal="true" />
      
</RelativeLayout>

Tiếp theo là nội dung của AndroidManifest.xml file.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Cuối cùng, bạn chạy ứng dụng Android vừa tạo ở trên.

Android Facebook

Chọn thiết bị mobile sẽ hiển thị màn hình mặc định sau:−

Android Facebook

Nhấn nút và bạn sẽ thấy một danh sách các Share Provider sau:

Android Facebook

Bây giờ chọn Facebook từ danh sách đó và sau đó viết bất cứ thông điệp nào. Như sau: −

Android Facebook

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.