Getting Started with Facebook SDK

Tôi sẽ hướng dẫn các bạn cách dùng facebook SDK theo từng bước (step-by-step):

Mọi thắc mắc có thể comment bên dưới.

 

Trước tiên ta vào: https://developers.facebook.com/ . Đăng nhập bằng TK facebook của bạn.

1

2

3

4

5

6

7

 

Tiếp theo là lấy key hash để điền vào hình trên. Có 2 cách để lấy keyhash, bạn theo cách của tôi (cách lằng nhằng) =))

Download openSSL tại đây: Download

Sau đó giải nén ra như hình dưới:

 

8

9

Thay đổi cho chính xác đường các đường dẫn trên máy của bạn:

 

keytool -exportcert -alias funnytesting -keystore “C:\Users\admin.android\debug.keystore” | “C:\OpenSSL\bin\openssl” sha1 -binary | “C:\OpenSSL\bin\openssl” base64

10

11

 

Quá trình cài đặt app xem như hoàn thành, Tiếp theo ta vào “build.gradle” trong app:

 

Thêm vào trước dependencies:

repositories {

mavenCentral()

}

Thêm dòng này vào dependencies:

compile ‘com.facebook.android:facebook-android-sdk:4.7.0’

 

Vào MainActivity, thêm: import com.facebook.FacebookSdk;

 

Mở AndroidManifest lên và thêm như sau: 12

 

File MainActivity.JAVA:


 

package xyz.davidng.funnytesting;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.facebook.login.widget.ProfilePictureView;

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

import java.util.Arrays;

public class MainActivity extends Activity{
TextView name, birthday, location;
ProfilePictureView profilePictureView;

LoginButton loginButton;
CallbackManager callbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
loginButton = (LoginButton) findViewById(R.id.login_button);
name = (TextView)findViewById(R.id.name);
birthday = (TextView)findViewById(R.id.birthday);
location = (TextView)findViewById(R.id.location);
profilePictureView = (ProfilePictureView)findViewById(R.id.profilePicture);

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this,
Arrays.asList("user_friends","user_location","user_birthday","user_likes","user_photos"));

GraphRequest request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
String strName = object.optString("name");
name.setText(strName);
String strBirthday = object.optString("birthday");
birthday.setText(strBirthday);
String strLocation = object.optString("location");
try {
JSONObject objLocation = new JSONObject(strLocation);
String locationName = objLocation.optString("name");
location.setText(locationName);
} catch (JSONException e) {
e.printStackTrace();
}
profilePictureView.setProfileId(object.optString("id"));

}
}
);
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,birthday,location");
request.setParameters(parameters);
request.executeAsync();
}

@Override
public void onCancel() {

}

@Override
public void onError(FacebookException error) {

}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}

 

file activity_main.XML:

 

<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="xyz.davidng.funnytesting.MainActivity">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
<TextView
android:id="@+id/name"
android:textSize="25sp"
android:layout_below="@id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/birthday"
android:textSize="25sp"
android:layout_below="@id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/location"
android:textSize="25sp"
android:layout_below="@id/birthday"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.facebook.login.widget.ProfilePictureView
android:id="@+id/profilePicture"
android:layout_below="@id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</RelativeLayout>

 

 

Kết quả:

2015-12-28_00-10-32

2015-12-28_00-09-38

 

 

Mọi thắc mắc có thể comment bên dưới !

Cám ơn các bạn đã chú ý theo dõi.!

 

Advertisements

8 thoughts on “Getting Started with Facebook SDK

    • <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="xyz.davidng.funnytesting">
      
          <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">
              <activity android:name=".MainActivity">
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
              <meta-data
                  android:name="com.facebook.sdk.ApplicationId"
                  android:value="@string/facebook_app_id" />
              <activity
                  android:name="com.facebook.FacebookActivity"
                  android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar" />
      
          </application>
      
      </manifest>
      

      Like

  1. Pingback: Facebook SDK – Share Ảnh Lên Wall | :: Public Diary

  2. cho mình hỏi,
    mình muốn làm 2 actvity
    Activity 1: Button Login
    Activity 2: name, birthday, location….
    Click button login thì đăng nhập và chuyển đến activity 2 và truyền vào thông tin FB. thì code intent viết ntn nhỉ

    Like

    • Bạn startActivity trong hàm onCompleted()
      Trước khi startActivity thì bạn dùng putExtra(“key”,”something”) để truyền dữ liệu sang Activity 2.

      Bên Activity 2 bạn dùng
      Intent i = getIntent();
      String data = i.getStringExtra(“key”) để lấy thông tin.

      Mình có một video nói về phần này: https://www.youtube.com/watch?v=kgGYceu0kZ4

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s