Facebook SDK dành cho Android cho phép mọi người đăng nhập vào ứng dụng qua phương thức Đăng nhập bằng Facebook. Khi đăng nhập vào ứng dụng bằng Facebook, mọi người có thể cấp quyền cho ứng dụng để bạn có thể truy xuất thông tin hoặc thực hiện hành động trên Facebook thay mặt họ.
Để biết dự án mẫu minh họa cách tích hợp phương thức Đăng nhập bằng Facebook vào ứng dụng Android, hãy xem FBLoginSample trên GitHub.
Hãy làm theo các bước dưới đây để thêm phương thức Đăng nhập bằng Facebook vào ứng dụng của bạn.
Vui lòng đăng nhập Facebook để tạo ứng dụng hoặc đăng ký với tư cách nhà phát triển.
buildscript { repositories {}}
: dependencies{}
để dựa vào phiên bản mới nhất của SDK Đăng nhập bằng Facebook: Nếu sử dụng Facebook SDK dành cho Android phiên bản 5.15 trở lên, bạn không cần thêm bộ lọc hoạt động hoặc bộ lọc mục đích cho Tab tùy chỉnh của Chrome. SDK đã bao gồm chức năng này.
Sau khi bạn tích hợp phương thức Đăng nhập bằng Facebook, hệ thống sẽ tự động ghi và thu thập một số Sự kiện trong ứng dụng cho Trình quản lý sự kiện, trừ khi bạn tắt tính năng Tự động ghi sự kiện trong ứng dụng. Để biết chi tiết về loại thông tin được thu thập và cách tắt tính năng tự động ghi sự kiện trong ứng dụng, hãy xem bài viết Tự động ghi sự kiện trong ứng dụng.
FacebookActivity
vào file kê khai trong Android. /app/res/values/strings.xml
của bạn.string
có tên là facebook_app_id
, fb_login_protocol_scheme
và facebook_client_token
, sau đó đặt những giá trị này thành ID ứng dụng và Mã ứng dụng của bạn. Ví dụ: nếu bạn có ID ứng dụng là 1234
và mã ứng dụng là 56789
thì mã của bạn sẽ có dạng như sau: /app/manifest/AndroidManifest.xml
. meta-data
vào thành phần application
cho ID ứng dụng và mã ứng dụng của bạn: application
của bạn: <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
uses-permission
vào file kê khai sau thành phần application
: uses-permission
vào file kê khai sau thành phần application
: Bạn có thể trực tiếp đặt tính năng tự động ghi Sự kiện trong ứng dụng thành "true" hoặc "false" bằng cách đặt cờ AutoLogAppEventsEnabled
trong file AndroidManifest.xml
.
LoginButton
từ SDK. LoginButton
là một thành phần giao diện người dùng bọc chức năng có trong LoginManager
. Khi ai đó nhấp vào nút này, quá trình đăng nhập sẽ bắt đầu với các quyền được đặt trong LoginManager
. Người dùng bên ngoài phải có quyền public_profile nâng cao thì mới sử dụng được phương thức Đăng nhập bằng Facebook. Nút này hoạt động theo trạng thái đăng nhập và hiển thị văn bản chính xác dựa trên trạng thái xác thực của một người nào đó. CallbackManager.Factory.create
. Login button
và đăng ký lệnh gọi lại trong phương thức onCreate()
hoặc onCreateView()
. Những thuộc tính bạn có thể tùy chỉnh bao gồm LoginBehavior
, DefaultAudience
, ToolTipPopup.Style
và các quyền trên LoginButton
. Ví dụ: private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginManager
hoặc LoginButton
. Nếu bạn đăng ký lệnh gọi lại bằng LoginButton
thì không cần đăng ký lệnh gọi lại trên trình quản lý Đăng nhập. onCreate()
của phân khúc: callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginResult
sẽ có AccessToken
mới cũng như các quyền đã cấp hoặc từ chối gần đây nhất. registerCallback
để đăng nhập thành công, bạn có thể chọn theo dõi những thay đổi hiện tại về mã truy cập thông qua lớp AccessTokenTracker
được mô tả bên dưới. onActivityResult
, hãy gọi callbackManager.onActivityResult
để chuyển kết quả đăng nhập vào LoginManager
qua callbackManager
. Nếu đang sử dụng hoạt động hoặc phân khúc của AndroidX, bạn không phải ghi đè "onActivityResult".
onActivityResult
đến callbackManager
. LoginManager
sẽ đặt AccessToken
và Profile
hiện tại cho người đó. Facebook SDK lưu dữ liệu này trong tùy chọn được chia sẻ và đặt ở đầu phiên. Bạn có thể xem một người đã đăng nhập chưa bằng cách kiểm tra AccessToken.getCurrentAccessToken()
và Profile.getCurrentProfile()
. AccessToken.getCurrentAccessToken
với SDK từ bộ nhớ đệm hoặc từ dấu trang của ứng dụng khi ứng dụng của bạn khởi chạy nguội. Bạn nên kiểm tra tính hiệu lực của mã tại phương thức onCreate
của Activity
:queries
trong file /app/manifest/AndroidManifest.xml
của bạn. Mã sau cho biết cách bật tính năng Đăng nhập nhanh. LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });