OAuth / Adapter Auth Twitter สำหรับ Zend Framework

โดย Watkin Steven Lloyd , วันเสาร์ 23 เมษายน 2011 15:57

การทำงานยังคง (ช้า) จากการใหม่ของฉัน Twitter - based Application กว่าสองถัดไปของวันหยุดธนาคารผมหวังว่าจะได้รับโมเมนตัมไปอีกครั้งกับโครงการ (ทั้งๆที่ของสภาพอากาศที่ยอดเยี่ยมในปัจจุบัน) Anyway, งานต่อไปของฉันคือการสร้างการตรวจสอบอะแดปเตอร์สำหรับ Zend Framework . ฉันได้ดำเนินการเข้าสู่ระบบการทำงาน แต่มีการลดลงของอะแดปเตอร์สำหรับ Zend Framework Auth ดูเหมือนข้อเสนอที่น่าสนใจดังนั้นฉันสร้างขึ้นมาได้ ...

(ผมไม่อยากจะไปถึง OAuth หรือการลงทะเบียนสมัครของคุณพูดเบาและรวดเร็ว แต่อาจมีหลายร้อยคำแนะนำและเป็นธรรมตรงไปตรงมา แต่อย่างใดของกระบวนการ.)

ความเชื่อมั่นของผู้บริโภคสนุกกับการ

ความแตกต่างระหว่าง OAuth และอะแดปเตอร์ authenication อื่น ๆ ใน Zend Framework คือ OAuth ต้องเปลี่ยนเส้นทางไปมาระหว่างผู้ให้บริการ OAuth และเซิร์ฟเวอร์ร้องขอจากลูกค้า ดังนั้นกระบวนการนี​​้ไม่มากเป็นตรงไปข้างหน้าเป็นเพียงแค่มองขึ้นไปรายละเอียดบางส่วนในฐานข้อมูลหรือตรวจสอบส่วนหัวของคำขอ โชคดี Zend Framework ส่วนประกอบเช่น Zend_Oauth_Consumer , ใช้เวลาส่วนใหญ่ของอาการปวดของมันออกไปและอะแดปเตอร์เพียง auth ของงานเพื่อให้วิธีการต้องโทร

สำหรับคำแนะนำในการใช้ Zend_Auth และรับรองความถูกต้องแสดงร่วมกับ Zend Framework มีการค้นหาบน Google, หรือตรวจสอบการกวดวิชานี้โดยแมทธิว Weier O'Phinney -- เข้าสู่ระบบและรับรองความถูกต้อง .

การใช้

เพื่อที่จะใช้อะแดปเตอร์รับรองความถูกต้องคุณต้องผ่านสองวัตถุในทาง constructor แรกเป็นตัวอย่างของ Zend_Oauth_Consumer การตั้งค่าสำหรับผู้ให้บริการ OAuth ของคุณ ฉันได้รับการทำเช่นนี้กับบริการของ Twitter และคุณจะเห็นชิ้นได้อย่างรวดเร็วในที่นี่ที่ -- เข้าสู่ระบบด้วย Twitter โดยใช้ Zend Framework . ฉันใช้การดำเนินงานของฉันที่ฉันตั้ง"URL สิทธิ์"เป็นฉันไม่ต้องการของผู้ใช้ที่จะขอให้สิทธิ์ในการสมัครครั้งที่พวกเขาพยายามที่จะเข้าสู่ระบบทุก พารามิเตอร์ที่สองคือตัวอย่างของ Zend_Session_Namespace ที่ instantiated กับมสเปซเป็นที่ที่คุณต้องการรายละเอียดสถานที่รับรองความถูกต้อง ในรหัสของฉันฉันได้สิ่งที่ต้องการดังต่อไปนี้

  $ config อาร์เรย์ = (
     'callbackUrl'=> ... URL - กลับ ...
     'SITEURL'=>'https : / / twitter.com / OAuth /'
     'consumerKey'=> ... ผู้บริโภคที่สำคัญ ...
     'consumerSecret'=> ... ลับคีย์ ...
 );
 $ = Zend_Oauth_Consumer ผู้บริโภคใหม่ ($ config);
 ผู้บริโภค setAuthorizeUrl $ -> ('https : / / twitter.com / OAuth / / รับรองความถูกต้อง');
 $ เซสชัน = new Zend_Session_Namespace (Pro_Auth_Adapter_Twitter : : AUTH_NAMESPACE);
 $ authAdapter = Pro_Auth_Adapter_Oauth ใหม่ ($ ผู้บริโภค, $ Session); 

โทรศัพท์ ->authenticate() อะแดปเตอร์แล้วจะทำให้เกิดการเปลี่ยนเส้นทางไปยังผู้ให้บริการ OAuth (อีกครั้งในกรณีของฉัน Twitter) เมื่อกลับไปยังโปรแกรมประยุกต์สายที่สองไป ->authenticate() นั้นจะดำเนินการตรวจสอบตัวเอง

หากคุณประสงค์ของผู้ใช้เพื่อกลับไปยังหน้า initally ขอแล้วให้ตรวจสอบสถานะของคุณจะถูกตรวจสอบในห้องแล้วก็ตั้งค่าพารามิเตอร์'callBackUrl'ที่เหมาะสมในแต่ละเวลาในการโหลดจะได้รับผู้ใช้ไปยังปลายทางตั้งใจเดิมของพวกเขา

หนึ่งฉันเพิ่มคุณลักษณะสุดท้ายคือความสามารถในการส่งพารามิเตอร์เพิ่มเติมโดยใช้ addParameter() และ setParameters() วิธีการ เพิ่มฟังก์ชันการทำงานนี้จะช่วยให้การส่งของเพิ่มเติมได้พาราเมื่อมีการเริ่มต้นเปลี่ยนเส้นทางไปยังผู้ให้บริการ OAuth ในกรณีของฉันนี้ช่วยให้ฉันผ่านแถวที่มีคีย์ของ'force_login'และค่าของจริงซึ่งกองกำลัง Twitter เพื่อขอให้คุณเข้าสู่ระบบอีกครั้ง (แม้ว่าจะเข้าสู่ระบบอยู่แล้ว) ซึ่งเป็นที่ดีสำหรับการเชื่อมโยงการใช้งานหลายบัญชี

รหัสมีอยู่ใน repo GitHub ของฉัน -- OAuth auth อะแดปเตอร์สำหรับรหัส Zend Framework (แสดงความเห็นยินดีต้อนรับ!)

แก้ไข : ดูเหมือนคนอื่นได้รับในกรณีเช่นกัน สำหรับการดำเนินงานอื่นโปรดดู http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

ปล่อยให้ตอบกลับ













ชุดรูปแบบพาโนรามาโดย Themocracy

3 ผู้เข้าชมออนไลน์ขณะนี้
2 แขก, 1 บอ, 0 สมาชิก
ผู้เข้าชมสูงสุดวันนี้ : 12 ที่ 07:57 UTC
เดือนนี้ : 22 ที่ 2011/08/06 12:30 UTC
ปีนี้ : 130 ที่ 28-03-2011 10:40 UTC
เวลาทั้งหมด : 130 ที่ 28-03-2011 10:40 UTC