Tạo đăng nhập facebook trong android 8 tháng 3 tuần trước #3664

  • huonggiang123
  • huonggiang123's Avatar
  • Offline
  • New Member
  • Tổng số bài viết: 1
  • Điểm khen ngợi: 0
Hướng dẫn tạo chức năng đăng nhập bằng facebook trong android

Hiện nay, hầu hết các ứng dụng thường sử dụng các chức năng xác thực từ các tài khoản bên ngoài như facebook, google. Việc này mang lại nhiều thuận lợi như khả năng xác thực tốt, thu thập được nhiều thông tin, người dùng không sợ bị mất thông tin mật khẩu, hay quên mật khẩu.

Cách thực hiện như sau:

Bước 1: Tạo ứng dụng facebook tại developers.facebook.com/apps/ . Ở bước này cần cung cấp một số thông tin như hình ảnh, tên … Nhớ kích hoạt cho ứng dụng có hiệu lực.

Bước 2: Tạo một project mới trong android. Trong file này, hãy thêm 2 dòng lệnh:



Trong file manifest.xml, thêm một số thông tin sau:

Thêm toàn bộ đoạn trên, trong đó, các dòng gạch đỏ mình lấy từ ứng dụng facebook.

Trong ứng dụng facebook, chúng ta phải đăng kí một khóa hash, để tạo khóa hash này, hãy chép đoạn code sau trong phương thức oncreate, sau khi có rồi thì có thể xóa đi nhé.
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo(“beautybot.samplefacebooklogin”, PackageManager.GET_SIGNATURES);
for(Signature signature: packageInfo.signatures){
MessageDigest messageDigest = MessageDigest.getInstance(“SHA”);
messageDigest.update(signature.toByteArray());
Log.d(“KeyHash”, Base64.encodeToString(messageDigest.digest(),Base64.DEFAULT));
}
}catch (Exception e){
}

Trong layout, bạn thêm nut facebook
<com.facebook.login.widget.LoginButton
android:id=”@+id/login_button”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_centerInParent=”true”/>

Trong mainActivity, ta có code như sau:
package beautybot.samplefacebooklogin;

import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

import java.security.MessageDigest;

public class MainActivity extends AppCompatActivity {

private LoginButton loginButton;
private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//////////facebook//////////////////////////////////
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();

setContentView(R.layout.activity_main);
loginButton = (LoginButton)findViewById(R.id.login_button);


loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(MainActivity.this,"Successful", Toast.LENGTH_LONG).show();

AccessToken accessToken = loginResult.getAccessToken();

Profile profile = Profile.getCurrentProfile();
profile.getName();
// displayMessage(profile);

Log.d("FacebookCallback","Obj_User ID: " + loginResult.getAccessToken().getUserId()+"-"+ profile.getName()+ "\n" + "Auth Token: " + loginResult.getAccessToken().getToken());
Toast.makeText(MainActivity.this,"Chào "+profile.getName(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(MainActivity.this,"Login attempt canceled.", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException e) {
Toast.makeText(MainActivity.this,"Login attempt failed.", Toast.LENGTH_LONG).show();
Log.d("FacebookCallback",e.toString());

}
});
///////////////////////////////////////////////////

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});


}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
@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 có thể dowloand và tham khảo code tại đây nhé:https://www.mediafire.com/file/pjmzz8hx7tu091p/samplefacebooklogin.rar

Chúc các bạn học tốt!
Không cho phép Khách viếng thăm viết bài.

quang cao daklak

Bài đăng mới nhất