Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

ผสานรวมการล็อกอิน Twitter ใน Rails ด้วย OmniAuth-Twitter: คู่มือขั้นตอน

ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีให้ผู้ใช้ล็อกอินแอปพลิเคชันด้วยบัญชี Twitter ทำได้ง่ายด้วย OAuth และ OmniAuth-Twitter ซึ่งเป็นกลยุทธ์ (strategy) ของ Twitter สำหรับ OmniAuth

มาเริ่มกันเลย!

เริ่มต้น

สร้างแอป Rails ใหม่ จากเทอร์มินัล รันคำสั่ง:

เปิด Gemfile เพิ่ม bootstrap gem:

ติดตั้งเจม:

เปลี่ยนชื่อ app/assets/stylesheets/application.css เป็น app/assets/stylesheets/application.scss

เพิ่มโค้ด import bootstrap:

สร้าง partial _navigation.html.erb ใน app/views/layouts สำหรับ navigation bar:

Render navigation ใน application layout:

สร้าง PagesController พร้อม action index:

แก้ไขวิว index:

คลาส jumbotron เป็นคอมโพเนนต์ของ Bootstrap สำหรับแสดงข้อความการตลาด

เพิ่ม root_path ใน routes:

ตั้งค่า OmniAuth-Twitter

สร้างแอป Twitter ใหม่ที่ Twitter Developer Portal กรอกรายละเอียด ตั้งค่า Callback URL เป็น https://127.0.0.1:3000/auth/twitter/callback สำหรับเครื่องท้องถิ่น

หลังสร้างแล้ว ไปที่แท็บ Keys and Access Tokens คัดลอก Consumer Key และ Consumer Secret เก็บไว้ปลอดภัย

Callback URL คือ URL ที่ผู้ใช้จะถูก redirect กลับมาหลังยืนยันตัวตน ทุก OmniAuth strategy คาดหวัง callback URL เป็น “/auth/:provider/callback” โดย :provider คือชื่อกลยุทธ์ (ในที่นี้คือ "twitter")

เพิ่มเจม omniauth-twitter ใน Gemfile:

สร้าง initializer สำหรับ OmniAuth ใน config/initializers/omniauth.rb:

ใช้ environment variables เพื่อเก็บ key อย่า commit ขึ้น public repo ใช้ dotenv-rails:

ติดตั้ง:

สร้างไฟล์ .env ในโฟลเดอร์รากโปรเจกต์:

เพิ่ม .env ใน .gitignore:

ตอนนี้ key และ token ปลอดภัยแล้ว!

เพิ่ม route สำหรับ callback:

เพิ่มลิงก์ Sign in with Twitter ใน navigation:

แสดงลิงก์ล็อกอิน Twitter เฉพาะเมื่อยังไม่ล็อกอิน

สร้าง Sessions

ต้องมี SessionsController จัดการล็อกอิน สร้างไฟล์ app/controllers/sessions_controller.rb:

Action create สร้าง session ให้ผู้ใช้ล็อกอินได้

ต้องมีเมธอด current_user ตรวจสอบสถานะล็อกอิน เพิ่มใน app/controllers/application_controller.rb:

User Model

สร้างโมเดล User:

ไฟล์ migration จะออกมาแบบนี้:

รัน migration:

แก้ไขโมเดล User:

โค้ดเก็บข้อมูลผู้ใช้: name, profile_image, token, secret หากต้องการเพิ่มดูที่หน้า OmniAuth-Twitter

ลบ Sessions (Logout)

เพิ่ม action destroy ใน SessionsController:

เพิ่มลิงก์ Log Out ใน navigation:

อัปเดต routes:

เริ่มเซิร์ฟเวอร์ และเปิด https://localhost:3000 เพื่อทดสอบ

สรุป

ในบทเรียนนี้ คุณได้เรียนรู้การเปิดใช้งาน OmniAuth-Twitter ใน Rails การดึงข้อมูลผู้ใช้จาก OmniAuth-Twitter ใน User Model และสร้าง SessionController จัดการล็อกอิน/ล็อกเอาท์ หวังว่าคุณจะสนุก ในอนาคตจะมีบทเรียนสำหรับ Facebook, Google, LinkedIn ด้วย