2012-03-26 38 views
5

i Tôi không thể hiểu một điều ..Làm thế nào để xác định người dùng đăng nhập thông qua api Facebook?

Trên trang web của tôi có một nút với phương pháp FB.login từ api JS SDK của facebook.

Khi người dùng truy cập trang web của tôi lần đầu tiên, nhấp vào nút - lấy một số dữ liệu từ tiểu sử trên facebook của mình, và sau đó chúng tôi sẽ kiểm tra máy chủ của tôi trong cơ sở dữ liệu có người dùng có id này hay không? Nếu không - viết một hàng mới. Ngoài ra chúng tôi tạo hồ sơ của người dùng trên trang web của tôi.

Bây giờ, khi người dùng truy cập trang web của chúng tôi (và nhấp vào nút, nếu anh ấy chưa đăng nhập) - làm cách nào để xác định anh ấy kết hợp với tiểu sử của anh ấy trên trang web của chúng tôi? Ví dụ: để hiển thị cho anh ấy tiểu sử của anh ấy hoặc anh ấy có thể thay đổi bất kỳ thứ gì trong đó ...

Trong ủy quyền thông thường, chúng tôi so sánh mật khẩu và thông tin đăng nhập của người dùng trong cơ sở dữ liệu. AccessToken luôn thay đổi. Tư tưởng chỉ cần kiểm tra id FB của người dùng, nhưng sau đó, có lẽ, bất cứ ai sẽ có thể thay thế id FB của mình, và nhập vào hồ sơ của mình, phải không?

Thủ thuật nào được sử dụng trong trường hợp này?

Trả lời

6

Bất kể nếu người dùng truy cập trang web của bạn lần đầu tiên hay không bạn luôn sử dụng phương pháp FB.login. Phương thức này xác thực nếu người dùng có quan hệ với ứng dụng của bạn và cung cấp cho bạn mã thông báo truy cập khi người dùng đã chấp nhận ứng dụng của bạn.

Khi sử dụng đăng nhập facebook để xác thực người dùng, người dùng đăng ký trong cơ sở dữ liệu của bạn không chứa mật khẩu, bạn chỉ có facebookid để liên kết tài khoản facebook với hồ sơ trang web của bạn. Các id facebook có thể thu được bằng cách sử dụng accesstoken được cung cấp bởi FB.login phương pháp ở phía máy chủ hoặc thông qua javascript như ví dụ tiếp theo của facebook docs.

FB.login(function(response) { 
if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     console.log('Good to see you, ' + response.name + '.'); 
    }); 
} else { 
    console.log('User cancelled login or did not fully authorize.'); 
} 
}); 

Trong đối tượng phản hồi, bạn có thể lấy id facebook (response.id).

1

Bạn có thể sử dụng ID Facebook để xác định người dùng trong cơ sở dữ liệu của mình, điều này là duy nhất cho mỗi người dùng facebook.

+4

ai có thể thay thế id này để truy cập vào tiểu sử id của người dùng đó trên trang web của tôi không? – Denis

3

Nếu bạn truy vấn API đồ thị https://graph.facebook.com/me?access_token=USER_ACCESS_TOKEN, bạn sẽ nhận được UID và sau đó so sánh với DB của bạn. Bạn đang sử dụng API Javascript, vì vậy, bạn nên sử dụng phương thức FB.getLoginStatus để nhận UID cho người dùng được kết nối.

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

Phương pháp này được chạy theo mặc định khi khởi tạo SDK với FB.init (status: true). Nó cho phép trang web của bạn nhận ra người dùng đã kết nối.

https://developers.facebook.com/docs/reference/javascript/FB.init/

+0

cảm ơn rất nhiều! :) – Denis

+0

Cố gắng nhận ra người dùng bằng cách nhận được trạng thái của mình, UX sẽ được cải thiện rất nhiều với nội dung được cá nhân hóa. – Alexcode

Các vấn đề liên quan