OAuth / Twitter Auth Adapter cho Zend Framework

Bởi Steven Lloyd Watkin , Thứ Bảy ngày 23 tháng tư 2011 15:57

Công việc tiếp tục (từ từ) về việc của tôi mới Twitter dựa trên ứng dụng. Trong hai ngày nghỉ tiếp theo của ngân hàng tôi hy vọng sẽ có được đà đi lại trên các dự án (trong-mặc dù thời tiết tuyệt vời hiện nay). Dù sao, nhiệm vụ tiếp theo của tôi là tạo ra một bộ điều hợp chứng thực cho Zend Framework . Tôi đã có một thực hiện việc đăng nhập, nhưng có sự sụt giảm Auth adapter cho Zend Framework có vẻ như một đề nghị hấp dẫn, vì vậy tôi tạo ra nó ....

(Tôi sẽ không đi qua OAuth hoặc đăng ký ứng dụng của bạn với twitter, có hàng trăm hướng dẫn viên và công bằng của một quá trình đơn giản dù sao đi nữa.)

Hãy tận hưởng niềm tin tiêu dùng

Sự khác biệt giữa OAuth và adapter authenication khác trong Zend Framework là OAuth yêu cầu chuyển hướng qua lại giữa các nhà cung cấp OAuth và máy chủ yêu cầu của khách hàng. Do đó quá trình này không phải là khá thẳng về phía trước như chỉ đơn giản là tìm kiếm một số chi tiết trong cơ sở dữ liệu hoặc kiểm tra các tiêu đề yêu cầu. May mắn là Zend Framework thành phần, như Zend_Oauth_Consumer , có nhiều nỗi đau đi và công việc chỉ là của các bộ chuyển đổi phương pháp xác thực để làm cho các cuộc gọi yêu cầu.

Đối với hướng dẫn sử dụng Zend_Auth, chứng thực thực hiện với Zend Framework có một tìm kiếm trên google, hoặc kiểm tra hướng dẫn này bởi Matthew Weier O'Phinney - Đăng nhập và xác thực .

Cách sử dụng

Để sử dụng các adapter chứng thực bạn cần phải vượt qua hai đối tượng trong thông qua các nhà xây dựng. Đầu tiên là một thể hiện của Zend_Oauth_Consumer thiết lập cho các nhà cung cấp OAuth của bạn. Tôi đã làm điều này với dịch vụ của Twitter và bạn có thể nhìn thấy một mảnh nhanh về mà ở đây - Đăng nhập với Twitter bằng cách sử dụng Zend Framework . Tôi đang sử dụng thực hiện của tôi, nơi tôi đặt "Cho phép URL" như tôi không muốn để người dùng được yêu cầu để cho phép ứng dụng mỗi khi họ cố gắng để đăng nhập. Các tham số thứ hai là một thể hiện của Zend_Session_Namespace được khởi tạo với các tên miền không gian vào mà bạn muốn đặt các chi tiết xác thực. Trong mã của tôi, tôi có một cái gì đó như sau:

  $ Config = array (
     'CallbackUrl' => ... gọi lại-url ...
     'SITEURL' => 'https: / / twitter.com / OAuth,
     'ConsumerKey' => ... người tiêu dùng-key ...,
     'ConsumerSecret' => ... bí mật-key ...
 );
 $ Tiêu dùng = mới Zend_Oauth_Consumer ($ config);
 $ Tiêu dùng-> setAuthorizeUrl ('https: / / twitter.com / / OAuth / xác nhận');
 $ Session = mới Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE);
 $ AuthAdapter = mới Pro_Auth_Adapter_Oauth ($ người tiêu dùng, $ phiên); 

Gọi ->authenticate() trên bộ điều hợp sau đó sẽ gây ra một chuyển hướng đến các nhà cung cấp OAuth (một lần nữa trong trường hợp của tôi Twitter). Khi trở về ứng dụng cuộc gọi thứ hai ->authenticate() thực sự sẽ thực hiện chứng thực bản thân.

Nếu bạn muốn người sử dụng để quay trở lại trang initally yêu cầu sau đó cung cấp tình trạng chứng thực của bạn được kiểm tra theo từng yêu cầu sau đó chỉ cần cài đặt thông số thích hợp 'callBackUrl' tại thời gian tải sẽ nhận được người dùng đến đích ban đầu dự định của họ.

Một tính năng mới nhất mà tôi thêm vào là khả năng gửi các thông số bổ sung bằng cách sử dụng addParameter()setParameters() phương pháp. Thêm chức năng này cho phép việc gửi thêm GET tham số khi lập ban đầu chuyển hướng đến các nhà cung cấp OAuth. Trong trường hợp của tôi, điều này cho phép tôi vượt qua một mảng với khóa 'force_login' và giá trị của sự thật mà các lực lượng Twitter để yêu cầu bạn đăng nhập lại (ngay cả khi đã đăng nhập) mà là rất tốt cho tài khoản liên kết các ứng dụng đa.

Mã này có sẵn trên repo GitHub của tôi - OAuth auth adapter cho Zend Framework mã (bình luận hoan nghênh!).

Edit: Hình như người khác đã được về trường hợp này là tốt. Để thực hiện khác xin vui lòng xem http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

Để lại một trả lời













Chủ đề của bức tranh toàn cảnh Themocracy

7 khách online
4 khách, 3 chương trình, 0 thành viên
Max khách truy cập hôm nay: 22 lúc 12:30 giờ UTC
Tháng này: 22 tại 2011/08/06 12:30 giờ UTC
Trong năm nay: 130 tại 28-03-2011 10:40 UTC
Tất cả thời gian: 130 vào 28-03-2011 10:40 UTC