Phương thức Đăng nhập bằng Facebook đem lại 2 lợi ích chính, đó là xác thực và quyền truy cập dữ liệu. Các lợi ích này không loại trừ lẫn nhau. Bạn có thể sử dụng phương thức Đăng nhập bằng Facebook để xác thực mọi người mà không cần lên kế hoạch truy cập vào dữ liệu của họ. Trong trường hợp đó, bạn không cần yêu cầu cấp quyền hoặc gửi ứng dụng của mình đi xét duyệt.
Phương thức xác thực và quyền truy cập dữ liệu đều có hiệu lực trong một khoảng thời gian hữu hạn. Tuy nhiên, thời hạn của phương thức xác thực và quyền truy cập dữ liệu sẽ khác nhau tùy theo nhiều yếu tố.
Thông qua phương thức xác thực, mọi người có thể đăng nhập vào ứng dụng di động hoặc ứng dụng web của bạn và tạo tài khoản bằng thông tin đăng nhập Facebook của họ. Họ sẽ không cần tạo hay ghi nhớ mật khẩu riêng.
Khi dùng phương thức Đăng nhập bằng Facebook để xác thực ai đó, ứng dụng của bạn sẽ nhận được mã truy cập Người dùng. Nếu ứng dụng của bạn dùng một trong các Facebook SDK, mã truy cập này sẽ có hiệu lực trong khoảng 60 ngày. Tuy nhiên, SDK sẽ tự động làm mới mã truy cập này mỗi khi người đó dùng ứng dụng của bạn. Vì vậy, mã truy cập sẽ hết hạn sau 60 ngày kể từ lần sử dụng gần đây nhất. Nếu ứng dụng của bạn không dùng Facebook SDK, bạn sẽ phải tự thêm mã để làm mới mã truy cập Người dùng. Nếu mã truy cập Người dùng hết hạn, ứng dụng của bạn sẽ phải yêu cầu người dùng thực hiện lại quy trình đăng nhập.
Thông qua phương thức Đăng nhập bằng Facebook, bạn cũng có thể yêu cầu cấp quyền khi mọi người đăng nhập vào ứng dụng của bạn. Nếu người dùng cấp những quyền này, ứng dụng của bạn sẽ truy cập được các mục dữ liệu của người dùng. Ví dụ: ứng dụng của bạn có thể truy cập vào tên và ảnh đại diện của người dùng.
Nếu ứng dụng yêu cầu cấp quyền thì thông thường, bạn sẽ phải gửi ứng dụng đi xét duyệt để Facebook có thể đảm bảo rằng dữ liệu không bị sử dụng sai mục đích. Ứng dụng của bạn có thể yêu cầu cấp quyền truy cập vào tên và ảnh của mọi người (các trường mặc định trên trang cá nhân) và email mà không cần thực hiện quy trình xét duyệt ứng dụng. Tuy nhiên, mọi quyền khác đều cần phải xét duyệt. Hãy xem Tài liệu tham khảo về quyền để biết danh sách các quyền và những quyền nào yêu cầu xét duyệt ứng dụng.
Thời gian hết hạn của quyền truy cập dữ liệu là 90 ngày, tùy theo thời điểm người dùng hoạt động gần đây nhất. Khi hết thời gian 90 ngày này, người dùng vẫn có thể truy cập vào ứng dụng của bạn - tức là họ vẫn được xác thực - nhưng ứng dụng lại không thể truy cập vào dữ liệu của họ. Để lấy lại quyền truy cập dữ liệu, ứng dụng của bạn phải yêu cầu người dùng cấp lại quyền.
Để yêu cầu cấp lại quyền thông qua Facebook SDK dành cho Android hoặc Facebook SDK dành cho iOS, hãy gọi reauthorizeDataAccess()
trong LoginManager
.
Hãy sử dụng auth_type: 'reauthorize'
đối với Facebook SDK dành cho JavaScript.
FB.login(function(response) { // Original FB.login code }, { auth_type: 'reauthorize' })
Hãy thực hiện lệnh gọi bằng auth_type=reauthorize
đối với web.
Dưới đây là các quyền sẽ không hết hạn:
ads_read
ads_management
business_management
configure_page_transactions
pages_manage_ads
pages_manage_cta
pages_manage_instant_articles
pages_manage_engagement
pages_manage_metadata
pages_manage_posts
pages_messaging
pages_read_engagement
pages_read_user_content
pages_show_list
read_audience_network_insights
read_insights
Với Android SDK và iOS SDK, bạn có thể thực hiện lệnh gọi dataAccessExpirationTime
trên đối tượng mã truy cập để truy xuất thời điểm hết hạn quyền truy cập của ứng dụng vào dữ liệu người dùng. Phương thức này sẽ trả về một ngày chỉ định thời điểm hết hạn quyền truy cập dữ liệu.
Bạn cũng có thể kiểm tra xem quyền truy cập vào dữ liệu người dùng đã hết hạn hay chưa bằng cách thực hiện lệnh gọi isDataAccessExpired
. Lệnh gọi này sẽ trả về giá trị Boolean.
Ở phía máy chủ, bạn có thể truy xuất thông tin này từ điểm cuối debug_token
.
Trên web, bạn có thể xem thời điểm hết hạn trong payload: data_access_expiration_time
.
{ status: 'connected', authResponse: { accessToken: '...', expiresIn:'...', reauthorize_required_in:'...', data_access_expiration_time: '...', signedRequest:'...', userID:'...' } }
Nếu ứng dụng của bạn không sử dụng một quyền trong 90 ngày, quyền đó có thể bị hết hạn, bất kể thời điểm người dùng hoạt động gần đây nhất. Điều này đúng ngay cả khi quyền đã được phê duyệt thông qua quy trình xét duyệt ứng dụng.