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: −
Đă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: −
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: −
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:−
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.
Chọn thiết bị mobile sẽ hiển thị màn hình mặc định sau:−
Nhấn nút và bạn sẽ thấy một danh sách các Share Provider sau:
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: −
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow 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.
Bài học Angular phổ biến tại vietjack.com: