কম্পিউটার টিউটোরিয়াল

রেইলসে OmniAuth-Twitter দিয়ে টুইটার লগইন ইন্টিগ্রেট করুন: ধাপে ধাপে গাইড

এই টিউটোরিয়ালে, আপনি শিখবেন কিভাবে আপনার অ্যাপ্লিকেশনের ব্যবহারকারীদের তাদের টুইটার অ্যাকাউন্ট দিয়ে লগইন করতে দেওয়া যায়। OAuth-এর কারণে এটি করা খুব সহজ হয়েছে।

আপনি OmniAuth-Twitter ব্যবহার করবেন, যাতে OmniAuth-এর জন্য টুইটার কৌশল (strategy) থাকে।

চলুন শুরু করি!

শুরু করা

টার্মিনাল থেকে রেইলস অ্যাপ্লিকেশন জেনারেট করুন:

Gemfile খুলুন এবং bootstrap জেম যোগ করুন।

জেম ইনস্টল করুন:

app/assets/stylesheets/application.css-কে app/assets/stylesheets/application.scss-এ রিনেম করুন।

完了後, Bootstrap ইমপোর্ট করার জন্য নিচের কোড যোগ করুন।

_navigation.html.erb নামে একটি পার্শিয়াল তৈরি করুন নেভিগেশন কোড রাখতে; এটি app/views/layouts ডিরেক্টরিতে থাকবে।

নিচের কোডটি IDE-তে পেস্ট করুন। এটি Bootstrap ব্যবহার করে আপনার অ্যাপ্লিকেশনের জন্য একটি নেভিগেশন বার তৈরি করে।

নেভিগেশন ব্যবহার করার জন্য, এপ্লিকেশন লেআউটে এটি রেন্ডার করুন। আপনার অ্যাপ্লিকেশন লেআউটকে নিচের মতো করুন।

টার্মিনালে নিচের কমান্ড দিয়ে PagesController index একশনের সাথে জেনারেট করুন।

জেনারেট হওয়া index ভিউটি নিচের মতো এডিট করুন।

উপরের কোডে jumbotron ক্লাস ব্যবহার করা হয়েছে—এটি একটি Bootstrap কম্পোনেন্ট যা ভিউপোর্টকে প্রসারিত করে মার্কেটিং মেসেজ দেখাতে। এর সম্পর্কে আরও জানতে Bootstrap ডকুমেন্টেশন দেখুন।

রাউট ফাইল খুলুন root_path যোগ করতে।

OmniAuth-Twitter সেট আপ করা

আপনাকে একটি নতুন টুইটার অ্যাপ্লিকেশন তৈরি করতে হবে। টুইটার ডেভেলপার পেজের এই পৃষ্ঠায় যান একটি তৈরি করতে। স্ক্রিনশটের মতো সব ضرুরী ডিটেইল দিন।

ক্যালব্যাক URL-এ আপনার ওয়েবসাইটের ঠিকানা প্লাস "auth/twitter/callback" দিন। লোকাল মেশিনে থাকলে আপনার ক্যালব্যাক URL হবে: https://127.0.0.1:3000/auth/twitter/callback।

সফল হলে আপনাকে অ্যাপের ইনফরমেশন পেজে রিডাইরেক্ট করা হবে। Keys and Access Tokens ট্যাবে যান আপনার কি পাওয়ার জন্য। Consumer Key এবং Consumer Secret কপি করে একটি সুরক্ষিত জায়গায় রাখুন—শীঘ্রই এগুলো ব্যবহার করব।

ক্যালব্যাক URL হলো সেই URL যেখানে সফল প্রমাণীকরণ ও অনুমোদনের পর ইউজারকে অ্যাপের ভিতরে রিডাইরেক্ট করা হবে (অনুরোধে ইউজারের ডেটা ও টোকেনও থাকবে)। সকল OmniAuth কৌশল ক্যালব্যাক URL-কে “/auth/:provider/callback”-এর সমান আশা করে। :provider কৌশলের নাম নেয়। এই কেসে কৌশল হবে "twitter" কারণ আপনি ইনিশিয়ালাইজারে এটিকে লিস্ট করবেন।

Gemfile খুলুন omniauth-twitter জেম যোগ করতে।

এখন config/initializers ডিরেক্টরিতে OmniAuth-এর জন্য একটি ইনিশিয়ালাইজার তৈরি করুন। এটি OmniAuth-এর কনফিগারেশন ধারণ করবে। নিচের মতো করুন।

এই পয়েন্টে আপনাকে নিরাপদে রাখা কি ও অ্যাক্সেস টোকেনগুলো ব্যবহার করতে হবে। এই গুলো সুরক্ষিত রাখতে হবে কারণ আপনি কোড কমিট করার সময় পাবলিক রিপোজিটরিয়ে পুশ করতে চান না।

এজন্য একটি জেম ব্যবহার করব। Gemfile আবার খুলুন এবং নিচের জেমটি যোগ করুন। এভাবে যোগ করুন:

জেম ইনস্টল করতে চালান।

আপনার অ্যাপ্লিকেশনের হোম ডিরেক্টরিতে .env নামে একটি ফাইল তৈরি করুন।

এটি খুলুন এবং আপনার কি ও টোকেনগুলো এভাবে যোগ করুন:

.gitignore খুলুন এবং আপনি যা তৈরি করেছেন সেটি যোগ করুন।

এভাবে আপনার কি ও অ্যাক্সেস টোকেন নিরাপদ! dotenv-rails ব্যবহারের বিষয়ে আরও জানতে GitHub পেজ দেখুন।

রাউট নিয়ে কাজ করার সময়। রাউট ফাইল খুলুন এবং নিচের রাউট যোগ করুন।

নেভিগেশনে টুইটার সাইন-ইন লিংক যোগ করতে হবে। নেভিগেশন ফাইল খুলুন এবং নিচের মতো করুন।

উপরে থেকে, আপনি টুইটার দিয়ে লগইন লিংকটি শুধু তখন দেখাবেন যখন ইউজার সাইন-ইন না থাকে।

সেশন তৈরি করা

ইউজার লগইন হ্যান্ডেল করার জন্য একটি সেশন কন্ট্রোলার লাগবে। আপনার কন্ট্রোলার্স ডিরেক্টরিতে একটি ফাইল তৈরি করুন; এর সूरत নিচের মতো হবে।

create অ্যাকশন ইউজারদের জন্য সেশন তৈরি করে যাতে তারা আপনার অ্যাপ্লিকেশনে লগইন করতে পারে। এটি না থাকলে ইউজাররা লগইন করতে পারবে না।

এই মুহূর্তে আপনাকে একটি current_user মেথড লাগবে। এটি চেক করতে সাহায্য করবে কোন ইউজার লগইন করা আছে কিনা।

app/controllers/application_controller.rb খুলুন এবং নিচের কোড যোগ করুন।

ইউজার মডেল

এখন আপনার Users-র জন্য একটি মডেল জেনারেট করুন। এর জন্য কমান্ড চালান।

এটি নিচের মতো একটি মাইগ্রেশন ফাইল জেনারেট করবে।

এখন ডাটাবেস মাইگریেট করুন:

আপনার User মডেল খুলুন এবং নিচের মতো করুন:

উপরের কোড ব্যবহারকারীর কিছু তথ্য সংরক্ষণ করে। এতে নাম, প্রোফাইল ইমেজ, টোকেন, এবং সিক্রেট থাকে। আপনার অ্যাপ্লিকেশনে এর চেয়ে বেশি প্রয়োজন হলে OmniAuth-Twitter পেজ দেখুন।

সেশন ডিলিট করা

আপনার অ্যাপ্লিকেশনে, আপনি ব্যবহারকারীদের লগ আউট করার ক্ষমতা দিতে চান। এর জন্য SessionsController-এ একটি destroy অ্যাকশন লাগবে। তারপর নেভিগেশনে একটি লিংক যোগ করব।

SessionsController-এ destroy অ্যাকশন যোগ করুন।

তারপর নেভিগেশনে লগ আউটের লিংক যোগ করুন, যাতে নেভিগেশন নিচের মতো হয়।

config/routes.rb খুলুন আপনার রাউট আপডেট করতে নতুন অ্যাকশনের সাথে।

রেইলস সার্ভার চালু করুন এবং ব্রাউজারে https://localhost:3000 যান দেখতে কী হয়েছে।

উপসংহার

এই টিউটোরিয়ালে আপনি শিখেছেন কিভাবে আপনার রেইলস অ্যাপ্লিকেশনে OmniAuth-Twitter সক্ষম করতে হয়। আপনি দেখেছেন OmniAuth-Twitter ব্যবহার করে ইউজার ডেটা কীভাবে পেতে হয়, যা আপনি User মডেলে করলেন। আপনি SessionControllers তৈরি করতে পেরেছেন যাতে ইউজাররা আপনার অ্যাপ্লিকেশন থেকে লগইন ও লগ আউট করতে পারে।

আশা করি আপনি উপভোগ করেছেন। ভবিষ্যতে আপনি ফেসবুক, গুগল, এবং লিংকডইনের জন্য একই কাজ কীভাবে করতে হয় সেটি দেখবেন।

  1. রেলসে ফ্ল্যাশ মেসেজ মাস্টার করুন: একটি সম্পূর্ণ গাইড

  2. রুবি ম্যাট্রিক্স বুঝতে: ডেফিনিশন, অ্যাপ্লিকেশন এবং কীভাবে তৈরি করবেন

  3. রুবি Struct ও OpenStruct: দক্ষ ভ্যালু অবজেক্টস

  4. Android-এ Google Now on Tap মास্টার করুন: ধাপে ধাপে গাইড