2010-07-24 50 views
8

Tôi đang phát triển một trang web thương mại điện tử PHP/MySQL với một số khía cạnh xã hội và đang tìm cách tích hợp nó với Facebook. Tôi đã có hệ thống xử lý phiên đăng ký/người dùng gốc. Tôi đã quản lý để bao gồm iframe "Plugin mạng xã hội", chẳng hạn như nút "Thích". Nhưng tôi thực sự muốn cung cấp cho người dùng tùy chọn đăng ký với trang web qua Facebook qua quá trình đăng ký gốc.Đăng nhập Facebook dưới dạng bổ sung cho thông tin đăng nhập hiện tại?

Tôi hiểu ý tưởng nhận mã thông báo truy cập qua giao thức OAuth và cuối cùng nhận được ID người dùng. Mối quan tâm của tôi là hai lần:

  1. Phương pháp này có an toàn không? Đây là trang web thương mại điện tử, nhưng tôi không lưu trữ bất kỳ thẻ tín dụng hoặc bất kỳ dữ liệu nhạy cảm nào khác. Tôi không thể nghĩ nó có thể bị khai thác như thế nào, nhưng tôi chỉ là một đầu!

  2. Tôi hiểu cách lấy mã thông báo ban đầu và nhận ID người dùng trong quá trình đăng ký. Nhưng làm thế nào để tôi nhận ra một người dùng trả về (phiên)? Tôi có phải triển khai SDK Javascript cho điều đó (thứ mà tôi muốn tránh) không? Hoặc, tôi có xử lý các phiên giống như chúng đã được xử lý tự nhiên hay không, nhưng thay thế ID người dùng thông thường trong cookie phiên bằng ID người dùng Facebook khi thích hợp?

Tôi xin lỗi nếu câu trả lời là hiển nhiên. Tôi đã lùng sục tài liệu của Google và Facebook, nhưng một nửa các liên kết mà tôi thấy là không dùng nữa các bài viết của FBConnect wiki và các tài liệu mới hữu ích, nhưng thưa thớt trên các ví dụ. Tôi không có ý tưởng gì vẫn được hỗ trợ, có gì mới và cách thực hiện điều này!

+1

Có lý do nào khiến bạn không muốn sử dụng SDK không? SDK là một trình bao bọc tiện lợi cho tất cả những thứ "hạ thấp" mà bạn sẽ cần phải lo lắng về bản thân. Chỉ cần tát nút 'fb: login-button' trên trang web của bạn và sau đó sử dụng một dòng mã để nhận id người dùng đã đăng nhập (ở dạng js hoặc phía máy chủ). – serg

+0

Tôi đoán tôi chỉ nhầm lẫn về việc tích hợp javascript phía máy khách với PHP phía máy chủ. Cơ chế đăng nhập gốc của trang web của tôi sử dụng phiên PHP và đã được tạo. Tôi đang bối rối về các bước cần thiết để lấy xác thực đăng nhập từ javascript và thiết lập một phiên PHP an toàn với nó. Tôi biết javascript đặt cookie - tôi có phải dựa vào đó và thay thế toàn bộ thiết lập phiên hiện tại của mình không? Não của tôi có một thời gian khó khăn xung quanh ý tưởng liên quan đến một bên thứ ba trong quá trình đăng nhập! –

+0

Bạn thường cần JS và PHP api của facebook cho điều đó. JS api sẽ được sử dụng để hiển thị hộp thoại đăng nhập facebook, trong khi PHP có thể được sử dụng để có được id người dùng đăng nhập. Bạn không cần phải lo lắng về session, trong api PHP bạn sẽ khởi tạo nó lần đầu tiên (bằng cách cung cấp thông tin ứng dụng của bạn), và sau đó chỉ cần nói một cái gì đó như '$ api-> getLoggedUserId()' (không quen thuộc với cú pháp api php chính xác) . Sau đó, bạn có thể lưu trữ id trả về trong một phiên mình nếu bạn muốn. Một lựa chọn khác sẽ được sử dụng FB kết nối chỉ để làm cho đăng ký hiện tại của bạn dễ dàng hơn cho người dùng fb (tương tự Digg) (* xin lỗi hết dung lượng *) – serg

Trả lời

14
  1. Có Oauth rất an toàn. Nhiều ứng dụng dựa vào nó và không có cách nào để khai thác nó.

  2. Một cách bạn có thể thực hiện việc này là lưu trữ ID người dùng Facebook để khi họ quay lại, bạn có thể thấy id của họ đã tồn tại trong hồ sơ của bạn và biết đó là người dùng cũ. Phiên của họ có thể khác (đã hết hạn kể từ lần truy cập trước) để bạn không muốn lưu trữ mã thông báo truy cập của họ; nhưng ID người dùng Facebook của họ luôn giống nhau.

Cách đăng ký/đăng nhập Facebook cơ bản trên trang web của mình là tôi đã thêm cột facebook_id vào bảng người dùng và nút "Đăng ký bằng Facebook". Nếu người dùng nhấp chuột, xác thực với Facebook và tôi lấy lại phiên và người dùng mới, tôi chuyển hướng đến trang đăng ký, điền trước nhiều trường nhất có thể với dữ liệu từ Facebook (như tên của họ) và thêm id Facebook trường nhập ẩn. Vì vậy, khi họ đăng ký, facebook_id của họ sẽ được lấp đầy trong cơ sở dữ liệu. Đây là trang đăng ký giống như trang chuẩn, vì vậy sự khác biệt duy nhất với người dùng không phải Facebook là trường facebook_id sẽ trống. Nếu bạn muốn, bạn cũng không thể yêu cầu mật khẩu cho người dùng Facebook.

Để người dùng đăng nhập, người dùng sẽ chỉ cần nhấp vào nút "Đăng nhập bằng Facebook" và xác thực với Facebook. Khi Facebook cung cấp cho tôi phiên, tôi đăng nhập người dùng với tư cách là người dùng có facebook_id là người dùng trong phiên của Facebook. Vì bạn lo lắng về bảo mật, tôi sẽ lưu ý rằng phiên này không thể được giả mạo vì nó được ký với khóa bí mật của ứng dụng mà chỉ bạn và Facebook mới biết. Nếu bạn sử dụng SDK của Facebook (bạn nên sử dụng), bạn không phải lo lắng về việc xác minh chữ ký và chữ ký. Thực tế là bạn có thể đọc thông tin mạch lạc từ phiên có nghĩa là SDK của Facebook đã xác minh nó.

This Facebook page là hướng dẫn tuyệt vời về tích hợp đăng ký với Facebook.

+0

Cảm ơn, điều đó thật tuyệt. Tôi đoán tôi chỉ cần một tổng quan cấp cao về cách cơ chế đăng nhập làm việc với xử lý phiên hiện tại. Tôi nghĩ rằng tôi có một xử lý trên nó - bây giờ để thực sự cố gắng nó! –

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