• Tech
  • Tutorials
  • Ebook
  • Java
  • Series
    • Kotlin
    • Retrofit
    • Volley
    • FaceBook
    • Ứng Dụng Quản Lý Bán Hàng
    • Firebase
    • Code
Tìm kiếm
Lập trình android – Học android từ cơ bản tới nâng cao
  • Tech
  • Tutorials
  • Ebook
  • Java
  • Series
    • Kotlin
    • Retrofit
    • Volley
    • FaceBook
    • Ứng Dụng Quản Lý Bán Hàng
    • Firebase
    • Code
Home Series FaceBook Login facebook cho ứng dụng android
  • Series
  • FaceBook

[Facebook SDK ] Login facebook cho ứng dụng android

By
Nguyễn Linh
3538

1.GIỚI THIỆU

Ở Bài viết đầu tiên mình đã giới thiệu cho các bạn cách tạo một ứng dụng facebook trên develop và cách tích hợp facebook sdk vào ứng dụng android. xem tại đây.
Ở Bài viết này mình sẽ hướng dẫn các bạn cách tích hợp login facebook vào ứng dụng android, đồng thời get các thông tin cá nhân của người dùng về.

2. CÁC BƯỚC THỰC HIỆN

  • Tạo giao diện đơn giản
  • Thêm ID của app fb vào ứng dụng
  • Setup trên https://developers.facebook.com
  • Code login
  • Parse dữ liệu trả về.

3.BẮT ĐẦU

3.1 Tạo giao diện login đơn giản như sau:

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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:text="LOGIN APP FACEBOOK" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16sp"
        android:text="www.AndroidCoBan.Com"/>
    <Button
        android:id="@+id/btnLoginFb"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="Login FaceBook"
        android:textColor="#fff"
        android:background="#3b5998"
        android:layout_marginTop="30dp"/>
</LinearLayout>

  • Truy cập vào develop bật module đăng nhập lên:

Sau đó truy cập vào phần quickstart để làm theo hướng dẫn  hoặc làm theo mình  😀
https://developers.facebook.com/quickstarts

  • Quay lại ứng dụng trên android studio thêm ID của app trên facebook vào ứng dụng:

  • Mờ file strings.xml: /app/src/main/res/values/strings.xml thêm id app.

1
<string name="facebook_app_id">357284681323683</string>

  • Mở  AndroidManifest.xml.

Thêm uses-permission:

Java
1
<uses-permission android:name="android.permission.INTERNET"/>

 

Thêm thẻ meta-data trong AndroidManifest.xml: thẻ này nằm trong thẻ application

1
2
3
<meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

  • Full file sẽ như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lynkdev.facebookdemo">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
        </activity>
    </application>
 
</manifest>

Như ở bài viết một mình chọn tương tác ở MainActivity.java bạn muốn đối thì quay lại bài viết 1 để xem chỗ đổi nhé.

  • Code trên MainActivity.java
    -Khai báo:
    1
    2
    3
    private static MainActivity mainActivity;
    private CallbackManager callbackManager;
    private FacebookCallback<LoginResult> loginResult;

    -Trong hàm OnCreate()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            FacebookSdk.sdkInitialize(getApplicationContext());
            callbackManager = CallbackManager.Factory.create();
            mainActivity = this;
            initFaceBook();
            LoginManager.getInstance().registerCallback(callbackManager, loginResult);
            Button loginButton = (Button) findViewById(R.id.btnLoginFb);
            loginButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    loginFaceBook();
                }
            });
            printKeyHash(this);
        }

    -Override onActivityResult
    1
    2
    3
    4
    5
    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }

    -Hàm login và các quyền cần thiết:
    1
    2
    3
    4
    //Login facebook with permisstion
        public void loginFaceBook() {
            LoginManager.getInstance().logInWithReadPermissions(mainActivity, Arrays.asList("public_profile", "user_friends","email"));
        }

    -Hàm logout:
    1
    2
    3
    4
    5
    //Hàm check login facebook
        public boolean isLoggedInFaceBook() {
            AccessToken accessToken = AccessToken.getCurrentAccessToken();
            return accessToken != null;
        }

    -Hàm pasrse Avatar:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Lấy Avatar
        public URL extractFacebookIcon(String id) {
            try {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                        .permitAll().build();
                StrictMode.setThreadPolicy(policy);
     
                URL imageURL = new URL("http://graph.facebook.com/" + id
                        + "/picture?type=large");
                return imageURL;
            } catch (Throwable e) {
                return null;
            }
        }

    -Cuối cùng hàm quan trọng nhất dùng để request lấy các thông tin của người dùng:
    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
    41
    42
    43
    public void initFaceBook () {
            loginResult = new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    //Login thành công xử lý tại đây
                    GraphRequest request = GraphRequest.newMeRequest(
                            AccessToken.getCurrentAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject object,
                                                        GraphResponse response) {
                                    // Application code
                                    String name = object.optString(getString(R.string.name));
                                    String id = object.optString(getString(R.string.id));
                                    String email = object.optString(getString(R.string.email));
                                    String link = object.optString(getString(R.string.link));
                                    URL imageURL = extractFacebookIcon(id);
                                    Log.d("name: ",name);
                                    Log.d("id: ",id);
                                    Log.d("email: ",email);
                                    Log.d("link: ",link);
                                    Log.d("imageURL: ",imageURL.toString());
     
                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters.putString(getString(R.string.fields), getString(R.string.fields_name));
                    request.setParameters(parameters);
                    request.executeAsync();
     
                }
     
                @Override
                public void onCancel() {
     
                }
     
                @Override
                public void onError(FacebookException error) {
     
                }
            };
        }

    Hàm get KeyHash cho bạn nào cần.
    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
    //Get keyHash
        public String printKeyHash(Activity context) {
            PackageInfo packageInfo;
            String key = null;
            try {
                //getting application package name, as defined in manifest
                String packageName = context.getApplicationContext().getPackageName();
     
                //Retriving package info
                packageInfo = context.getPackageManager().getPackageInfo(packageName,
                        PackageManager.GET_SIGNATURES);
     
                Log.e("Package Name=", context.getApplicationContext().getPackageName());
     
                for (android.content.pm.Signature signature : packageInfo.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    key = new String(Base64.encode(md.digest(), 0));
     
                    // String key = new String(Base64.encodeBytes(md.digest()));
                    Log.e("Key Hash=", key);
                }
            } catch (PackageManager.NameNotFoundException e1) {
                Log.e("Name not found", e1.toString());
            } catch (NoSuchAlgorithmException e) {
                Log.e("No such an algorithm", e.toString());
            } catch (Exception e) {
                Log.e("Exception", e.toString());
            }
     
            return key;
        }

    Tiến hành Run App và xem kết quả ở Logcat:



  • Value trong file String.xml

1
2
3
4
5
6
7
   <string name="name">name</string>
    <string name="id">id</string>
    <string name="email">email</string>
    <string name="link">link</string>
    <string name="fields">fields</string>
    <string name="fields_name">id,name,link,email</string>
    <string name="data">data</string>

Ở Bài viết tiếp theo mình sẽ làm tiếp các phần Invite friend và Share  và ads của facebook.
Cám ơn các bạn đã theo dõi.

  • TAGS
  • facebook login
  • facebook sdk
Facebook
Twitter
Google+
Pinterest
WhatsApp
    Bài trước[Facebook SDK ] Tích hợp facebook vào ứng dụng android
    Bài tiếp theo[Retrofit2] Login và register với retrofit2 và php
    Nguyễn Linh

    Tổng Hợp

    • Tài nguyên cho lập trình viên android
    • Tổng hợp các bài viết lập trình Android cơ bản
    • Tổng hợp các bài viết năng cao về lập trình android

    Series

    • Ví dụ MVVM-ViewModel-LiveData-Retrofit2-RX-Kotlin
    • Ví dụ triển khai mô hình MVP trong android
    • Thư Viện Retrofit
    • Thư viện Volley
    • FaceBook SDK
    • Ứng Dụng Quản Lý Bán Hàng
    • Kotlin

    Bài Viết Gần Đây

    Phiên bản Android Studio 3.3 có gì mới?

    Sử dụng Scheduling tasks with Work Manager (P.2)

    Sử dụng Scheduling tasks with Work Manager (P.1)

    Example MVVM-ViewModel-LiveData-Retrofit2-RX-Kotlin

    Google I/O 2018: What’s new in Android

    © www.androidcoban.com
    Bài viết liên quan

    [Facebook SDK ] Cách chia sẻ link hình ảnh và invite...

    Nguyễn Linh
    Edit with Live CSS
    Save
    Write CSS OR LESS and hit save. CTRL + SPACE for auto-complete.