2012-12-13 21 views
5

Tôi sắp sử dụng một trong những khung xác thực đa nhà cung cấp đó Opauth hoặc Hybridauth (không biết cái nào là tốt nhất nhưng tôi có chút ưu tiên cho cái thứ hai) do đó hậu quả là tôi phải quản lý nhiều tài khoản .Làm cách nào để quản lý tài khoản người dùng từ nhà cung cấp đa dịch vụ (facebook, twitter) trong trang web của tôi?

Trong thực tế, tôi đã có quản lý tài khoản của riêng mình (đăng nhập + mật khẩu + email) và tôi đã có người dùng facebook năm ngoái. Bây giờ tôi sẽ phải đối phó với tài khoản Twitter, tài khoản được liên kết, v.v ... Vì vậy, câu hỏi rất dễ: cách quản lý tên người dùng? Ví dụ: John tạo tài khoản trên trang web của tôi. Vì vậy, đăng nhập "John"/tên người dùng được thực hiện. Nhưng nếu một John khác từ Facebook thì một người khác từ Twitter đến, tôi phải làm gì? Trong Stackoverflow (hoặc ở nơi khác), thực hành là gì?

Tôi không muốn John viết thay mặt cho một John khác. Hôm nay với hệ thống của riêng tôi, tôi xác minh rằng tên đăng nhập (tên người dùng) là duy nhất. Nếu không, tôi từ chối người dùng. Nhưng bây giờ ?

Tôi nghĩ rằng tôi có thể kiểm tra email nhưng ... Tôi đã học được rằng địa chỉ email không thể là chìa khóa vì Twitter không cung cấp cho bạn.

Hope tôi đủ rõ ràng :)

liên quan

Trả lời

0

Như bạn nói nó không thể chỉ lấy tên người dùng từ các nguồn khác nhau và chỉ lưu trữ nó. Tôi không biết làm thế nào nó được thực hiện ở đây trong stackoverflow nhưng nếu bạn cố gắng đăng ký tên là tùy chọn vì vậy có lẽ nó không phải là một khóa duy nhất. Tôi không thể nhìn thấy cách để đăng nhập với twitter ở đây vì vậy tôi đặt cược rằng email là một khóa duy nhất.

Tôi sẽ cố gắng trả lời câu hỏi của bạn nhưng tôi đã chỉ sử dụng API facebook để có thể điều này không thể thực hiện được với người khác. Tôi cho rằng mỗi API cung cấp cho bạn thứ gì đó bạn có thể lưu trữ trong cơ sở dữ liệu của mình và sử dụng nó sau này để xác định người dùng của bạn dựa vào API của họ.

Nếu bạn cho phép người dùng đăng ký với facebook (hoặc gmail, twitter ...) sau đó bạn có thể sử dụng các phương pháp tiếp theo (Tôi chắc rằng có rất ít hơn):

  1. Họ luôn đăng nhập với facebook (hoặc twitter, gmail ...): bạn lưu trữ một bản ghi cho chúng bên trong cơ sở dữ liệu của bạn với khóa được API cung cấp và thông tin hữu ích khác mà bạn có thể thu thập. Như bạn đã nói, mỗi API cung cấp cho bạn những thứ khác nhau để bạn phải suy nghĩ trước những gì bạn thực sự cần để cung cấp cho người dùng trải nghiệm tốt: tên của họ có cần thiết không? tuổi tác? Nếu bạn cần nhiều dữ liệu hơn API được cung cấp, bạn nên chuyển sang phương pháp tiếp theo hoặc tìm nạp trước và làm cho nó có thể chỉnh sửa trước đó. Ở đây bạn không yêu cầu người dùng của bạn cho một mật khẩu để họ chỉ có thể đăng nhập với facebook không phải với một hình thức đăng nhập, nếu một người dùng cố gắng xác thực với facebook (hoặc twitter, gmail) một lần nữa bạn biết được chìa khóa bạn phải tìm kiếm và xác thực sử dụng của bạn.

  2. Có thể tạo tài khoản và liên kết với facebook (hoặc bất kỳ): bạn yêu cầu quyền facebook và sau đó điền vào biểu mẫu để cung cấp dữ liệu bị thiếu (mật khẩu, thư nếu họ sử dụng twitter ...) và sau đó tạo bản ghi lưu trữ khóa duy nhất do API cung cấp để tiến hành chính xác như bước 1 nếu họ sử dụng tài khoản facebook của họ để đăng nhập. Nếu bạn yêu cầu mật khẩu và email, họ cũng có thể sử dụng biểu mẫu đăng nhập chuẩn.

  3. Bạn có thể sử dụng cách tiếp cận đầu tiên và yêu cầu người dùng thay đổi thuộc tính xung đột với người dùng khác (tên trong trường hợp của bạn) hoặc thậm chí yêu cầu điền vào những gì còn thiếu tùy thuộc vào mạng xã hội nào họ đang sử dụng để ký Bạn có thể sử dụng tên + họ như tên người dùng để giảm khả năng phân phối nếu đây là những gì bạn muốn lưu trữ để xác định người dùng của bạn.

Hope this helps

+0

Cảm ơn @LuisClemente đã trợ giúp. Thực tế, tôi không gặp vấn đề gì trong việc quản lý ID duy nhất. Mỗi nhà cung cấp quản lý sự độc đáo nên không thành vấn đề. Hệ thống của tôi cũng quản lý nó nhưng dựa trên email + đăng nhập. Câu hỏi là làm thế nào để biết sự khác biệt giữa John và John khi John nhận xét một tin tức chẳng hạn. Tôi chỉ thấy rằng Stackoverflow thêm một ID duy nhất trong URL. Tôi đã tìm kiếm tất cả "Pierrot" và 2 tồn tại :) ==> SO.com/users/ ** 985357 **/pierrot – Pierrot

+0

@Pierrot sau đó có câu trả lời của bạn. Vì nó có vẻ ở đây tên có thể được nhân đôi (vì vậy không phải là khóa duy nhất) và bạn chỉ có thể biết sự khác biệt nếu bạn thấy hồ sơ của họ (hoặc họ có avatar khác nhau hoặc một cái gì đó XD). Như tôi đã nói, nó hoàn toàn phụ thuộc vào trải nghiệm bạn muốn cho người dùng của mình và điều quan trọng đối với trang web của bạn là hoạt động. – LuisClemente

+0

Có @LuisClemente, bạn nói đúng. Tôi phải thay đổi hoàn toàn hành vi của trang web của mình. Nhưng tôi nghĩ nó là tốt nhất và khi tôi đọc trên [janrain.com] (http://janrain.com) tôi sẽ có thể kéo thêm thành viên với một quản lý tài khoản OpenID. Cảm ơn rất nhiều. Thảo luận trợ giúp để xem mọi thứ rõ ràng hơn :). – Pierrot

0

HybridAuth cung cấp cho bạn một cách tuyệt vời để tích hợp trang web của bạn với các phương tiện truyền thông xã hội ...

http://hybridauth.sourceforge.net/

này cũng sẽ giúp ...

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