Một trong những phần quan trọng nhất khi khởi chạy Hộp thoại đăng nhập là chọn dữ liệu mà ứng dụng của bạn muốn truy cập. Tất cả những ví dụ sau đều sử dụng thông số scope
, đó là cách bạn yêu cầu quyền truy cập vào dữ liệu của ai đó. Tất cả được gọi chung là Quyền.
Quyền được đề cập chi tiết trong hướng dẫn về quyền của chúng tôi. Tuy nhiên, có vài điều sau đây cần nhớ khi xử lý quyền và hộp thoại đăng nhập:
email
phải được Facebook xét duyệt trước khi cung cấp cho mọi người.. Tìm hiểu thêm trong tài liệu về quy trình xét duyệt đăng nhập và nguyên tắc xét duyệt chung của chúng tôi.Một trong những cách làm tốt nhất khi sử dụng phương thức Đăng nhập bằng Facebook là không yêu cầu quyền đọc và quyền đăng cùng một lúc. Để hỗ trợ phương thức này, ứng dụng của bạn có thể yêu cầu thêm quyền vào lúc khác, sau khi ai đó đã đăng nhập. Để thực hiện việc đó, bạn chỉ cần khởi chạy Hộp thoại đăng nhập chứa quyền mới mà bạn đang yêu cầu.
Ví dụ: giả sử bạn đã có Nút đăng nhập với các quyền sau:
<fb:login-button scope="public_profile" onlogin="checkLoginState();"> </fb:login-button>
Nếu đã kiểm tra /me/permissions
để biết các quyền được cấp sau khi người đó chấp nhận, bạn sẽ thấy như sau:
{"data": [ { "permission":"public_profile", "status":"granted" } ] }
Nếu muốn thêm quyền email
vào lúc khác, bạn có thể khởi chạy lại quyền này bằng hàm FB.login()
như sau:
FB.login(function(response) { console.log(response); }, {scope: 'email'});
(Bạn phải gọi hàm này trên công cụ quản lý sự kiện của nút, nếu không các trình chặn cửa sổ bật lên của trình duyệt có thể chặn hàm này.)
Lưu ý rằng hàm này chỉ yêu cầu quyền mới. Nếu bạn chấp nhận quyền mới, khi kiểm tra /me/permissions
, bạn sẽ nhận được kết quả sau đây:
{"data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"email", "status":"granted" } ] }
Lưu ý rằng quyền mới email
đã được thêm vào danh sách các quyền được phép.
Với phương thức Đăng nhập bằng Facebook, mọi người có thể từ chối chia sẻ một số quyền với ứng dụng của bạn. Nếu ai đó từ chối cấp quyền user_likes
(Lượt thích), khi kiểm tra /me/permissions
để biết những quyền đã được cấp, bạn sẽ nhận được kết quả như sau:
{ "data": [ { "permission":"public_profile", "status":"granted" }, { "permission":"user_likes", "status":"declined" } ] }
Lưu ý rằng người này đã từ chối cấp quyền user_likes
.
Bạn có thể yêu cầu một lần để một người cấp cho ứng dụng của bạn những quyền họ đã từ chối. Bạn nên hiển thị một màn hình cho biết lý do bạn nghĩ họ nên cấp quyền đó cho bạn rồi yêu cầu lại. Tuy nhiên, nếu bạn sử dụng phương thức được mô tả trong phần trước, Hộp thoại đăng nhập sẽ không yêu cầu quyền đó.
Đó là vì sau khi ai đó từ chối một quyền, hộp thoại Đăng nhập sẽ không yêu cầu lại quyền đó trừ khi bạn nói rõ lý do bạn yêu cầu lại quyền bị từ chối.
Để thực hiện việc này, hãy thêm cờ auth_type: rerequest
vào lệnh gọi FB.login()
:
FB.login( function(response) { console.log(response); }, { scope: 'user_likes', auth_type: 'rerequest' } );
Khi đó, Hộp thoại đăng nhập sẽ yêu cầu lại quyền bị từ chối. Hộp thoại này sẽ rất giống hộp thoại trong phần yêu cầu lại quyền, chỉ khác là dùng để bạn yêu cầu lại một quyền bị từ chối.