2009-08-29 22 views
19

Gần đây tôi đã được ký hợp đồng để làm việc trên một ứng dụng yêu cầu Facebook-Connect là một trong các cơ chế xác thực của nó.Kết nối Facebook hoặc OpenID? Từ quan điểm của nhà phát triển

Làm việc trên giải pháp Facebook-Connect, tôi nhận ra rằng nó đang thực hiện một chương trình xác thực đăng nhập một lần, nếu bạn đăng nhập vào một trang web, bạn đã đăng nhập vào tất cả chúng. Cá nhân, tôi không thích cách tiếp cận và thấy rằng thật khó (không phải không thể) để làm việc với khi cố gắng kênh tất cả các hệ thống xác thực thông qua một quá trình mà bạn (nhà phát triển) có một số quyền kiểm soát. Tôi cũng nghĩ rằng nó giới thiệu security issues (see Risks of Internet Deployment) không cần thiết chỉ để cải thiện một chút trải nghiệm người dùng.

Trong khi nghiên cứu chiến lược để làm việc với công nghệ, tôi đã nhận thấy rằng blogosphere có tất cả nhưng được xức dầu Facebook-Connect như là chén thánh xác thực, lặp lại ý kiến ​​của nhau và kêu gọi cao và mạnh mẽ rằng "OpenID quá phức tạp" . Đồng thời, tôi chưa thực sự thấy nhiều nhà phát triển và chuyên gia bảo mật nổi bật giương cờ hoặc lên tiếng ý kiến ​​của họ về vấn đề này. Trải nghiệm duy nhất của tôi với OpenID là với StackOverflow và các trang liên quan. Tôi cũng đã có một thời gian khó hiểu những gì nó đã được lúc đầu, nhưng một khi tôi nhận ra rằng tôi có thể đăng nhập với thông tin đăng nhập google của tôi, kinh nghiệm được chứng minh là thực sự trơn tru.

Tôi có bị hoang tưởng hay thiếu cái gì mà mọi người đều có? Facebook-Connect có thực sự là một giải pháp thay thế tốt hơn cho OpenID hay tất cả mọi người đều uống Kool Aid của ai đó?


EDIT:

Sau khi làm việc về vấn đề này, tôi khẳng định rằng chương trình đăng nhập facebook-connect là ít hơn lý tưởng. Toàn bộ iframe/js/cookie/tải lại điều là xấu xí và có thể dễ dàng trở thành vấn đề. Việc tích hợp đăng nhập fb vào hệ thống xác thực hiện tại là một bài tập trong chính nó. Bạn sẽ phải thực hiện một số thỏa hiệp. Tôi phải viết một bài báo khác để giải thích cách tôi đã làm.

Facebook dường như bị ám ảnh một chút với Đăng nhập một lần đối với tôi. Hầu hết mọi người không biết rằng Facebook có OpenID được kích hoạt cho trang web của riêng họ, nhưng ngay cả cách họ thực hiện nó là để mô phỏng SSO và làm cho nó một chút vô nghĩa. Cách tôi nghĩ OpenID là nghĩa vụ phải làm việc: bạn đi đến một trang web mới, nếu bạn có một tài khoản OpenId, đặt url, đăng nhập vào nhà cung cấp của bạn và bạn đang ở. Bạn có thể tiến hành để hoàn thành thông tin bổ sung.

Fb không cung cấp cho bạn đăng nhập OpenID ở phía trước. Thay vào đó, trước tiên bạn phải đăng ký và đăng nhập, sau đó chuyển đến Cài đặt tài khoản và trong Tài khoản được liên kết, chọn một nhà cung cấp OpenID. Tuy nhiên, không giống như StackOverflow hiểu được điểm, facebook chỉ cho phép bạn đăng nhập với OpenID của bạn, nếu bạn hướng dẫn nhà cung cấp của bạn nhớ cài đặt đó. Tại sao? Nó làm cho nó giống SSO hơn. Nếu bạn không chọn hộp google yêu cầu nhớ, OpenID không hoạt động trên facebook.

Đăng nhập sang một bên, kết nối facebook hoạt động nói chung, nhưng vẫn còn nhiều góc để tròn. Một vài điều đã khiến tôi kéo tóc và nguyền rủa của tôi tại địa chỉ đó:

  • tài liệu trên facebook nằm rải rác và không được sắp xếp hợp lý. Trong vòng một giờ mở đầu tiên, bạn sẽ có ít nhất 10 tab được mở trong trình duyệt của mình. Nếu/khi bạn vấp ngã khi các chủ đề thú vị mà bạn cho rằng có thể hữu ích trong tương lai, hãy đảm bảo đánh dấu chúng đúng cách, không dựa vào các điều hướng để tìm lại chúng bởi vì đôi khi các bài viết chính được chôn sâu. Tôi biết cách tiếp cận wiki để ghi lại tài liệu của api đã làm cho rất nhiều dự án lười biếng gần đây, nhưng thông thường, đây là facebook. Họ nên có phương tiện để thuê một đội để cung cấp hướng dẫn sử dụng thích hợp. Vì vậy, hãy nhớ có cho mình một thư mục dấu trang facebook đẹp trước khi bạn bắt đầu.
  • Có rất nhiều phương pháp trong api, chúc may mắn tìm được ví dụ về cách sử dụng chúng, bạn phải dựa vào bản năng.
  • nhiều lần, khi một cái gì đó không hoạt động như bạn muốn, không ai biết tại sao. Khi truy cập các trang diễn đàn, các giải thích được đưa ra dưới hình thức giả thuyết và tin đồn. ví dụ. Khi đăng nhập, tại sao một số ứng dụng có cửa sổ đăng nhập bật lên khi một số khác có hộp thoại js modal? có thể kiểm soát hành vi đó không? không ai chắc chắn. Đó là tin đồn rằng facebook đang tiến hành một số thử nghiệm mà không để cho bất cứ ai biết.
  • không phải mọi thứ đều hoạt động như được quảng cáo. tức là bạn có thể thấy mình được khuyến khích sử dụng tính năng, lãng phí thời gian học tập, triển khai, gỡ lỗi, sau đó chỉ tìm ra rằng nó không hoạt động với kết nối facebook khi bạn đặt nó trong trình xử lý ngoại lệ try/catch. ví dụ. feed.publishUserAction.
  • facebook cố gắng hết sức để thân thiện với người dùng. Họ lãng phí tài nguyên có giá trị đẩy api tự động chỉ hoạt động một nửa thời gian (xfbml), thay vì khuyến khích các nhà phát triển tận dụng kiến ​​thức khó kiếm được của họ bằng cách sử dụng các công cụ cơ bản hơn được chứng minh là hoạt động phần lớn thời gian (giả sql + html). ví dụ. Tôi lãng phí thời gian cố gắng sử dụng một sự kết hợp của ajax/xfbml/js để kéo bạn bè hình ảnh từ máy chủ của họ. Nó sẽ làm việc cho một vài yêu cầu sau đó ngừng làm việc hoàn toàn. Sau đó tôi quyết định lấy dữ liệu trực tiếp từ db của họ bằng cách sử dụng ngôn ngữ truy vấn facebook (fql) của họ và tạo đánh dấu của riêng tôi bằng html. làm việc 100%. Lời khuyên của tôi cho bạn nếu bạn là một nhà phát triển thực sự, đừng mua vào câu thần chú "mọi thứ dễ dàng" mà facebook cố gắng nuôi sống mọi người, nó không phải. Ngoài việc tự làm quen với api khách hàng nền tảng chương trình của bạn (PHP, Python, Java, v.v.), hãy đầu tư vào việc tìm hiểu những gì bạn có thể lấy từ máy chủ của họ trực tiếp bằng cách sử dụng fql và những gì bạn có thể thực hiện trên trình duyệt với JS Client API (không phải là nhầm lẫn với fbjs). Bạn cũng có thể thấy rằng sau 2 là tất cả những gì bạn cần để làm hầu hết mọi thứ.

Tôi chắc chắn danh sách không kết thúc ở đó, nhưng từ đầu của tôi ở đây.

+0

Câu hỏi hay! – typeoneerror

+0

@mike, tôi đồng ý giữ nó đơn giản - chỉ sử dụng FQL và API Javascript bất cứ khi nào có thể. Đó là những gì tôi đang làm với ứng dụng web định vị người bạn của tôi. –

Trả lời

6

Cảnh báo: ý kiến ​​mạnh mẽ tiếp theo.

Có, họ đang uống Kool-Aid. Facebook Connect là một Đăng nhập một lần độc quyền, phụ thuộc vào nhà cung cấp và hơn thế nữa. Facebook đi xuống, hoặc được coi là không đáng tin cậy, và bạn đang bị hosed.

OpenID bỏ qua điều đó.Nó có vấn đề kinh nghiệm người dùng lớn hiện nay, nhưng dài hạn nó là một giải pháp tốt hơn bởi vì nó giải phóng hệ thống từ sự phụ thuộc vào (và lọc tất cả lưu lượng truy cập thông qua) một nhà cung cấp duy nhất. Hơn nữa, đặc tả và triển khai của nó có vẻ sạch hơn rất nhiều - không có công cụ JavaScript/IFrame nào. Chỉ yêu cầu HTTP và chuyển hướng đơn giản. Điều này cũng mang lại cho bạn khả năng tương thích trình duyệt tốt hơn rất nhiều.

Kết nối Facebook đã khắc phục sự cố trải nghiệm người dùng nhưng với chi phí hỗ trợ trình duyệt và lựa chọn nhà cung cấp. Đó là một chiến thắng thực dụng ngắn hạn, nhưng tôi nghĩ rằng dài hạn đó không phải là một ý tưởng hay.

2

Lược đồ đăng nhập một lần hiện khá phổ biến với các ứng dụng chính. Nếu bạn đăng nhập vào Gmail, bạn đã đăng nhập vào tất cả các sản phẩm của Google. Tôi nghĩ rằng nó có ý nghĩa trong một cách, đặc biệt nếu các ứng dụng được kết nối với nhau, là một dịch vụ chính và các nhà cung cấp có những người bảo mật tốt nhất làm việc đằng sau hậu trường.

Bây giờ cho OpenID, tôi nghĩ rằng đó cũng là một ý tưởng tuyệt vời, nhưng OpenID vẫn không dễ tiếp cận. Nó được cho là cách mạng hóa đăng nhập cho các trang web rung nhỏ và trung bình, nhưng nó đã không. Có rất nhiều trang web sử dụng nó, nhưng dường như không đủ. Hầu hết các trang web vẫn sử dụng các lược đồ đăng nhập của riêng họ, gọi nó là thờ ơ hoặc lo lắng với một nhà cung cấp riêng biệt.

Nhưng tôi nghĩ sớm hay muộn cái gì đó giống như OpenID sẽ xuất hiện nhưng để nó hoạt động cần một sự thúc đẩy lớn đằng sau nó. Một người như Google.

Chỉ cần tưởng tượng nếu bạn có thể đăng nhập SO bằng cách sử dụng ID google của bạn.

Để bây giờ tôi nghĩ rằng bạn không cần phải khó chịu với Facebook Connect, nhưng tôi khuyên bạn nên OpenID mặc dù tôi không sử dụng nó bản thân mình chưa :) (thờ ơ)

+0

Tôi hài lòng với Đăng nhập một lần trong một mạng lưới các trang web có liên quan. Tôi chỉ không nhận được điểm của trang web của tôi được coi là một phần của mạng như vậy khi tất cả những gì tôi muốn là quá trình xác thực. Btw, bạn có thể đăng nhập vào SO bằng id google của mình. Quan điểm của tôi là ngay cả khi cửa sổ gmail của bạn mở cửa 24/7, khi bạn cố gắng đăng nhập vào SO, bạn sẽ được nhắc nhập tên người dùng/mật khẩu của bạn. Là một nhà phát triển tôi thích điều đó, bởi vì tôi nhận được một lá cờ xác định mà tôi có thể sử dụng để khởi tạo đúng hồ sơ. –

+0

Tôi nghĩ rằng OpenID có ít cảm giác "đăng nhập mạng" hơn Facebook Connect, tốt hơn hoặc tệ hơn. Cá nhân, tôi bực mình rằng Facebook đã phát minh ra giao thức riêng của nó thay vì đi với OpenID. Tôi hy vọng rằng cuối cùng họ sẽ trở thành một nhà cung cấp OpenID đầy đủ bên ngoài * và * Relying Party. Với sự thiên vị đó, tôi khuyên bạn nên sử dụng lộ trình OpenID. –

+0

Đôi khi, google làm cho bạn đăng nhập lại (nhưng nó nhớ tên của bạn) khi bạn truy cập các dịch vụ khác của họ, đặc biệt nếu bạn chưa truy cập sản phẩm đó trước đây. Đó là một điều tốt, theo ý kiến ​​của tôi. – Neo42

0

Bạn đã xem Google Friend Connect chưa? Nó tương tự như Facebook Connect, nhưng nó là Open ID dựa, do đó, không hoàn toàn độc quyền đối với Google. Nó cũng có vẻ giải quyết các vấn đề trải nghiệm người dùng ID mở.

rpxnow.com cũng thực hiện một công việc khá tốt để giải quyết vấn đề trải nghiệm người dùng ID mở.

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