Huong Dan Xay Dung Ung Dung Facebook
-
Upload
ngotuannghia1 -
Category
Documents
-
view
249 -
download
0
Transcript of Huong Dan Xay Dung Ung Dung Facebook
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
1/18
Su tm v bin son bi Thuviendientu.org
1
ANDROID FACEBOOK CONNECT TUTORIALSource code : AndroidFacebookConnect.zip
Generating App Signature for Facebook Settings
To create facebook android native app you need to provide your Android application signature in
facebook app settings. You can generate your application signature (keyhash) usingkeytool that
comes with java. But to generate signature you need opensslinstalled on your pc. If you dont have
one download openssl fromhereand set it in your system environment path.
Open your command prompt (CMD) and run the following command to generate your keyhash.
While generating hashkey it should ask you password. Give password as android. If it dont ask for
password your keystore path is incorrect.
keytool -exportcert -alias androiddebugkey -keystore "\.android\debug.keystore" | openssl sha1 -binary | openssl base64
check the following command how i generated hashkey on my pc.
keytool -exportcert -alias androiddebugkey -keystore"C:\Users\Ravi\.android\debug.keystore" | openssl sha1 -binary | opensslbase64
Registering your Facebook Application
After generating your app signature successfully, register your facebook application by going
tocreate new facebook applicationand fill out all the information needed. And select Native
Android App and give your hashkey there which you generated previously using keytool.
http://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip&can=2&q=http://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip&can=2&q=http://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip&can=2&q=https://developers.facebook.com/appshttps://developers.facebook.com/appshttps://developers.facebook.com/appshttps://developers.facebook.com/appshttp://code.google.com/p/openssl-for-windows/downloads/detail?name=openssl-0.9.8k_WIN32.zip&can=2&q= -
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
2/18
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
3/18
Su tm v bin son bi Thuviendientu.org
3
Creating Facebook Reference Project
Once you are done with registering your facebook application, you need to download facebook SDK
and create a new reference project. This reference project will be used to compile your actual
project.
1. Downloadfacebook android SDKfrom git repositories.
(git clone git://github.com/facebook/facebook-android-sdk.git)
2. In your Eclipse goto File Import Existing Projects into Workspace and select the facebookproject you downloaded from git repository.
https://github.com/facebook/facebook-android-sdkhttps://github.com/facebook/facebook-android-sdkhttps://github.com/facebook/facebook-android-sdkhttps://github.com/facebook/facebook-android-sdk -
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
4/18
Su tm v bin son bi Thuviendientu.org
4
Creating Your Facebook Connect Project
1. Create new Project in your Eclipse IDE. File New Android Project and fill out all the details.
2. Now we need to add reference of this project to existing facebook project. Right Click on Project
Properties android Click on Add button select your facebook project Click Apply.
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
5/18
Su tm v bin son bi Thuviendientu.org
5
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
6/18
Su tm v bin son bi Thuviendientu.org
6
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
7/18
Su tm v bin son bi Thuviendientu.org
7
Now our project setup is done. We can start coding our facebook application.
3. Open your AndroidManifest.xml file add network connect permission in order to connect to
internet.
AndroidManifest.xml
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
8/18
Su tm v bin son bi Thuviendientu.org
8
4. Open Your Main Activity Class and initialize all the variables needed.
publicclassAndroidFacebookConnectActivity extendsActivity {// Your Facebook APP IDprivatestatic String APP_ID = "308180782571605"; // Replace your App ID
here// Instance of Facebook ClassprivateFacebook facebook;privateAsyncFacebookRunner mAsyncRunner;String FILENAME = "AndroidSSO_data";privateSharedPreferences mPrefs;@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main); facebook = newFacebook(APP_ID);mAsyncRunner = newAsyncFacebookRunner(facebook);
5. I created a simple interface which contains button to login, post to wall, show access tokens and
logout for testing purpose.
Login to Facebook Account
I used a button to login into facebook account. In your activity write a click event for Login button
click. Inside click event declare a function named loginToFacebook();
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
9/18
Su tm v bin son bi Thuviendientu.org
9
Login button click event
btnFbLogin.setOnClickListener(new View.OnClickListener() {@OverridepublicvoidonClick(View v) {
loginToFacebook();}
});
and function body for loginToFacebook() function is:
publicvoidloginToFacebook() {mPrefs = getPreferences(MODE_PRIVATE);String access_token = mPrefs.getString("access_token", null);longexpires = mPrefs.getLong("access_expires", 0);if(access_token != null) {
facebook.setAccessToken(access_token); }if(expires != 0) {
facebook.setAccessExpires(expires); }if(!facebook.isSessionValid()) {
facebook.authorize(this,newString[] { "email", "publish_stream"},newDialogListener() {
@Overridepublic
void
onCancel() {
// Function to handle cancel event
}@OverridepublicvoidonComplete(Bundle values) {
// Function to handle complete event// Edit Preferences and update facebook acess_tokenSharedPreferences.Editor editor = mPrefs.edit();editor.putString("access_token",
facebook.getAccessToken());editor.putLong("access_expires",
facebook.getAccessExpires()); editor.commit();
}@OverridepublicvoidonError(DialogError error) {
// Function to handle error}@Override
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
10/18
Su tm v bin son bi Thuviendientu.org
10
publicvoidonFacebookError(FacebookError fberror) {// Function to handle Facebook errors
}});
}}
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
11/18
Su tm v bin son bi Thuviendientu.org
11
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
12/18
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
13/18
Su tm v bin son bi Thuviendientu.org
13
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
14/18
Su tm v bin son bi Thuviendientu.org
14
Getting Profile Information from Facebook
To get profile information we need to make an api request to facebook graph API. Following is a
function that will make an api request tofacebook profile graph apiand will get profile information
from facebook.
getProfileInformation()publicvoidgetProfileInformation() {
mAsyncRunner.request("me", newRequestListener() {@Overridepublic
void
onComplete(String response, Object state) {
Log.d("Profile", response);String json = response;try{
JSONObject profile = newJSONObject(json);// getting name of the userString name = profile.getString("name");// getting email of the userString email = profile.getString("email");runOnUiThread(newRunnable() {
@Overridepublic
void
run() {
Toast.makeText(getApplicationContext(), "Name: " +
name + "\nEmail: "+ email, Toast.LENGTH_LONG).show();}
});} catch(JSONException e) {
e.printStackTrace();}
https://developers.facebook.com/docs/reference/api/https://developers.facebook.com/docs/reference/api/https://developers.facebook.com/docs/reference/api/https://graph.facebook.com/me/?access_token=AAAAAAITEghMBAHpMeQF01tn2qfZAe1Fdm5ksIs2Sj78PAkrZAZCLiZAqzsDPUbhaT2e0wwzUcQtGoKQms3EDY82UMTjx0zlZBjcgPfzZCYWaZAHs4NTjEhKhttps://graph.facebook.com/me/?access_token=AAAAAAITEghMBAHpMeQF01tn2qfZAe1Fdm5ksIs2Sj78PAkrZAZCLiZAqzsDPUbhaT2e0wwzUcQtGoKQms3EDY82UMTjx0zlZBjcgPfzZCYWaZAHs4NTjEhKhttps://graph.facebook.com/me/?access_token=AAAAAAITEghMBAHpMeQF01tn2qfZAe1Fdm5ksIs2Sj78PAkrZAZCLiZAqzsDPUbhaT2e0wwzUcQtGoKQms3EDY82UMTjx0zlZBjcgPfzZCYWaZAHs4NTjEhKhttps://graph.facebook.com/me/?access_token=AAAAAAITEghMBAHpMeQF01tn2qfZAe1Fdm5ksIs2Sj78PAkrZAZCLiZAqzsDPUbhaT2e0wwzUcQtGoKQms3EDY82UMTjx0zlZBjcgPfzZCYWaZAHs4NTjEhKhttps://developers.facebook.com/docs/reference/api/ -
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
15/18
Su tm v bin son bi Thuviendientu.org
15
}@OverridepublicvoidonIOException(IOException e, Object state) {}@OverridepublicvoidonFileNotFoundException(FileNotFoundException e,
Object state) {}@OverridepublicvoidonMalformedURLException(MalformedURLException e,
Object state) {}@OverridepublicvoidonFacebookError(FacebookError e, Object state) {}
});}
The above function will get json data from facebook. You need to parse the json in order to get
individual profile data. If you are not aware of json parsing look at this article. Android JSON Parsing
Tutorial.
The sample profile json from facebook will be like this
{"id": "1464730016","name": "Ravi Tamada","first_name": "Ravi","last_name": "Tamada","link": "https://www.facebook.com/ravi8x","username": "ravi8x","birthday": "12/22/1988","hometown": {
"id": "112158005464147","name": "Baruva"
},"location": {
"id": "102186159822587","name": "Chennai, Tamil Nadu"
},"bio": "Author: www.androidhive.info\r\nCo-author: www.9lessons.info","work": [
{"employer": {
"id": "179366562092719","name": "ByteAlly"
},"location": {
http://www.androidhive.info/2012/01/android-json-parsing-tutorial/http://www.androidhive.info/2012/01/android-json-parsing-tutorial/http://www.androidhive.info/2012/01/android-json-parsing-tutorial/http://www.androidhive.info/2012/01/android-json-parsing-tutorial/https://www.facebook.com/ravi8xhttps://www.facebook.com/ravi8xhttps://www.facebook.com/ravi8xhttp://www.androidhive.info/2012/01/android-json-parsing-tutorial/http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ -
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
16/18
Su tm v bin son bi Thuviendientu.org
16
"id": "102186159822587","name": "Chennai, Tamil Nadu"
},"position": {
"id": "124917314217511","name": "Product Head"
}]
}],"favorite_athletes": [
{"id": "18620649907","name": "Virat Kohli"
}],"education": [
{"school": {
"id": "131587206873093","name": "Raghu Engineering College (REC)"},
"degree": {"id": "140065339390579","name": "B.Tech"
},"year": {
"id": "142963519060927","name": "2010"
},"type": "Graduate School","classes": [
{"id": "192259410803415","name": "2010","with": [
{"id": "584960408","name": "Santosh Patnaik"
}],"from": {
"id": "584960408","name": "Santosh Patnaik"
}}
]}],
"gender": "male","relationship_status": "Single","website":
"www.androidhive.info\nwww.9lessons.info\nwww.twitter.com/ravitamada\nwww.about.me/rv",
"timezone": 5.5,"locale": "en_US","languages": [
-
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
17/18
Su tm v bin son bi Thuviendientu.org
17
{"id": "106059522759137","name": "English"
},{
"id": "107617475934611","name": "Telugu"
},{
"id": "112969428713061","name": "Hindi"
},{
"id": "343306413260","name": "Tamil"
}],"verified": true,"updated_time": "2012-03-02T17:04:18+0000"
}Extending facebook Permissions
If you want users other information like checkins, friends list etc., you need to extend facebook
permissions while logging in user. Check list offacebook permissions
facebook.authorize(this, newString[] { "email", "publish_checkins","publish_stream"},
newDialogListener() {@Overridepublic
void
onComplete(Bundle values) {}
@OverridepublicvoidonFacebookError(FacebookError error) {}@OverridepublicvoidonError(DialogError e) {}@OverridepublicvoidonCancel() {}
});Getting Access Token
Sometimes you might needed users access token for future purpose usage. Following code will give
you currently logged in user access token.
https://developers.facebook.com/docs/reference/api/permissions/https://developers.facebook.com/docs/reference/api/permissions/https://developers.facebook.com/docs/reference/api/permissions/https://developers.facebook.com/docs/reference/api/permissions/ -
8/2/2019 Huong Dan Xay Dung Ung Dung Facebook
18/18
Su tm v bin son bi Thuviendientu.org
18
String access_token = facebook.getAccessToken();
Logout from your app
When user want to stop using facebook for your app, you can provide logout method to clear app
state and invalidate access token. So further you cant make request to facebook from your app.
logoutFromFacebook();publicvoidlogoutFromFacebook() {
mAsyncRunner.logout(this, newRequestListener() {@OverridepublicvoidonComplete(String response, Object state) {
Log.d("Logout from Facebook", response);if(Boolean.parseBoolean(response) == true) {
// User successfully Logged out}
}@OverridepublicvoidonIOException(IOException e, Object state) {}@OverridepublicvoidonFileNotFoundException(FileNotFoundException e,
Object state) {}@OverridepublicvoidonMalformedURLException(MalformedURLException e,Object state) {}@OverridepublicvoidonFacebookError(FacebookError e, Object state) {}
});}