Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रेल एप्लिकेशन में OmniAuth-Twitter का उपयोग कैसे करें

इस ट्यूटोरियल में, आप सीखेंगे कि आपके एप्लिकेशन के उपयोगकर्ताओं को अपने ट्विटर अकाउंट का उपयोग करके लॉग इन करने की अनुमति कैसे दी जाए। OAuth जैसे टूल से ऐसा करना आसान बना दिया गया है।

आप OmniAuth-Twitter का उपयोग करेंगे, जिसमें OmniAuth के लिए Twitter रणनीति शामिल है।

चलो गोता लगाएँ!

आरंभ करना

अपना रेल एप्लिकेशन जेनरेट करके प्रारंभ करें। ऐसा करने के लिए अपने टर्मिनल से कमांड चलाएँ:

रेल न्यू Tuts-Social -T 

अपना जेमफाइल खोलें और बूटस्ट्रैप रत्न जोड़ें।

#Gemfile...मणि 'बूटस्ट्रैप-एसएएस'

कमांड चलाकर रत्न स्थापित करें:

बंडल इंस्टॉल

नाम बदलें app/assets/stylesheets/application.css करने के लिए app/assets/stylesheets/application.scs

जब हो जाए, तो बूटस्ट्रैप आयात करने के लिए कोड की निम्नलिखित पंक्तियाँ जोड़ें।

#app/assets/stylesheets/application.scss...@import 'bootstrap-sprockets';@import 'bootstrap';

_navigation.html.erb . नाम का एक आंशिक बनाएं अपना नेविगेशन कोड रखने के लिए; आंशिक app/views/layouts . में स्थित होना चाहिए निर्देशिका।

नीचे दिए गए कोड को एक IDE में दर्ज करें। यह आपके एप्लिकेशन के लिए नेविगेशन बार बनाने के लिए बूटस्ट्रैप का उपयोग करता है।

#app/views/layouts/_navigation.html.erb

उपयोग किए जाने वाले नेविगेशन के लिए, आपको इसे अपने एप्लिकेशन लेआउट में प्रस्तुत करना होगा। मेरे पास नीचे जैसा है वैसा दिखने के लिए अपने एप्लिकेशन लेआउट में बदलाव करें।

#app/views/layouts/application.html.erb  टट्स सोशल <%=csrf_meta_tags %> <%=stylesheet_link_tag 'एप्लिकेशन', मीडिया :'सब', 'डेटा-टर्बोलिंक्स-ट्रैक':'रीलोड'%> <%=javascript_include_tag 'एप्लिकेशन', 'डेटा-टर्बोलिंक्स-ट्रैक':'रीलोड'%>   <%=रेंडर "लेआउट/नेविगेशन" %> 
<% flash.each do |key, value| %>
<%=value %>
<% end %>
<%=उपज%>

एक PagesController जेनरेट करें अपने टर्मिनल में नीचे दिए गए आदेश को दर्ज करके एक अनुक्रमणिका क्रिया के साथ।

रेल जेनरेटेड कंट्रोलर पेज इंडेक्स

जेनरेट किए गए इंडेक्स व्यू में, इसे इस तरह दिखने के लिए संपादित करें।

#app/views/pages/index.html.erb 

टट्स सोशल में आपका स्वागत है!

हमें चेक आउट करने के लिए धन्यवाद!

उपरोक्त कोड में, हम jumbotron . नामक एक वर्ग का उपयोग करते हैं —यह एक बूटस्ट्रैप घटक है जो हमें मार्केटिंग संदेश दिखाने के लिए व्यूपोर्ट का विस्तार करने की अनुमति देता है। आप इसके बारे में बूटस्ट्रैप दस्तावेज़ों से अधिक जानकारी प्राप्त कर सकते हैं।

अपना root_path add जोड़ने के लिए अपनी रूट फ़ाइल खोलें ।

#config/routes.rbRails.application.routes.draw do # इस फाइल में उपलब्ध डीएसएल के विवरण के लिए, https://guides.rubyonrails.org/routing.html रूट टू:"पेज#इंडेक्स"एंड देखें। 

OmniAuth-Twitter सेट अप करना

आपको एक नया ट्विटर एप्लिकेशन बनाना होगा। एक पेज बनाने के लिए ट्विटर डेवलपर पेज में इस पेज पर जाएं। सभी आवश्यक विवरण दर्ज करें, जैसा कि नीचे स्क्रीनशॉट में मेरे पास है।

रेल एप्लिकेशन में OmniAuth-Twitter का उपयोग कैसे करें रेल एप्लिकेशन में OmniAuth-Twitter का उपयोग कैसे करें रेल एप्लिकेशन में OmniAuth-Twitter का उपयोग कैसे करें

कॉलबैक URL के लिए, अपनी वेबसाइट का पता और "प्रमाण/ट्विटर/कॉलबैक" दर्ज करें। यदि आप किसी स्थानीय मशीन पर हैं, तो आपका कॉलबैक URL यह होना चाहिए:https://127.0.0.1:3000/auth/twitter/callback .

आपको ट्विटर पर ऐप के सूचना पृष्ठ पर पुनः निर्देशित किया जाएगा। कुंजी और पहुंच टोकन पर नेविगेट करें अपनी चाबियाँ प्राप्त करने के लिए टैब। उपभोक्ता कुंजी और उपभोक्ता रहस्य की प्रतिलिपि बनाएँ और उन्हें सुरक्षित स्थान पर चिपकाएँ—हम शीघ्र ही उनका उपयोग करेंगे।

कॉलबैक यूआरएल वह यूआरएल है जहां सफल प्रमाणीकरण और स्वीकृत प्राधिकरण के बाद उपयोगकर्ता को ऐप के अंदर रीडायरेक्ट किया जाएगा (अनुरोध में उपयोगकर्ता का डेटा और टोकन भी होगा)। सभी OmniAuth रणनीतियाँ कॉलबैक URL को "/auth/:provider/callback" के बराबर होने की उम्मीद करती हैं। :provider रणनीति का नाम लेता है। इस मामले में, रणनीति "ट्विटर" होगी जैसा कि आप प्रारंभकर्ता में सूचीबद्ध करेंगे।

अपना Gemfile खोलें omniauth जोड़ने के लिए - twiiter रत्न।

#Gemfile...मणि 'ऑम्नियाउथ-ट्विटर'

अब अपने config/initializers निर्देशिका में OmniAuth के लिए प्रारंभकर्ता बनाएं। यह OmniAuth के लिए कॉन्फ़िगरेशन रखेगा। मेरे पास जो नीचे है, उसे वैसा ही बनाइए।

#config/initializers/omniauth.rbRails.application.config.middleware.use OmniAuth::Builder do प्रदाता :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']end

इस बिंदु पर आपको सुरक्षित रूप से संग्रहीत कुंजियों और एक्सेस टोकन का उपयोग करने की आवश्यकता होगी। आपको इन्हें सुरक्षित रखने की आवश्यकता है क्योंकि जब आप अपना कोड जमा करते हैं तो आप इन्हें सार्वजनिक भंडार में नहीं डालना चाहते हैं।

इसके लिए आप किसी रत्न का प्रयोग करेंगे। अपना Gemfile फिर से खोलें और नीचे दिए गए रत्न को जोड़ें। इसे अपने Gemfile में इस प्रकार जोड़ें:

#Gemfile...group :Development, :test do... gem 'dotenv-rails'...

मणि स्थापित करने के लिए, दौड़ें।

बंडल इंस्टॉल

अपने एप्लिकेशन की होम डायरेक्टरी में, .env . नाम की एक फाइल बनाएं .

इसे खोलें और अपनी चाबियाँ और टोकन इस तरह जोड़ें:

#.envTWITTER_KEY=xxxxxxxxxxxxxxTWITTER_SECRET=xxxxxxxxxxxxxx

ओपन .gitignore और आपके द्वारा अभी बनाई गई फ़ाइल जोड़ें।

#.gitignore...# इग्नोर करें .env जिसका इस्तेमाल चाबियों को स्टोर करने और टोकन एक्सेस करने के लिए किया जाता है। 

ऐसा करने से, आपकी चाबियां और एक्सेस टोकन सुरक्षित हैं! dotenv का उपयोग करने के तरीके के बारे में अधिक जानने के लिए -rails , GitHub पेज देखें।

अपने मार्ग पर काम करने का समय। अपनी मार्ग फ़ाइल खोलें और नीचे मार्ग जोड़ें।

#config/routes.rb... '/auth/:provider/callback' प्राप्त करें:'session#create'

आपको अपने नेविगेशन में ट्विटर साइन-इन के लिए लिंक जोड़ना होगा। अपनी नेविगेशन फ़ाइल खोलें और इसे इस तरह दिखने के लिए ट्वीक करें।

ऊपर से, आप ट्विटर से लॉग इन करने के लिए लिंक तभी दिखाना चाहते हैं जब उपयोगकर्ता साइन इन न हो।

सत्र बनाना

उपयोगकर्ताओं के लॉग इन को संभालने के लिए आपको एक सत्र नियंत्रक की आवश्यकता होगी। इसके लिए अपनी नियंत्रक निर्देशिका में एक फ़ाइल बनाएँ; इसे इस तरह दिखना चाहिए।

निर्माण क्रिया उपयोगकर्ताओं के लिए एक सत्र बनाने में मदद करती है ताकि वे आपके आवेदन में लॉग इन हो सकें। इसके बिना, उपयोगकर्ताओं के पास लॉग इन करने का कोई साधन नहीं है।

#app/controllers/sessions_controller.rbclass sessionController  

आपको एक current_user की आवश्यकता होगी इस बिंदु पर विधि। इससे आपको यह जांचने में मदद मिलेगी कि कोई उपयोगकर्ता लॉग इन है या नहीं।

ओपन app/controllers/application_controller.rb और निम्नलिखित जोड़ें।

#app/controllers/application_controller.rb... def current_user @current_user ||=User.find(session[:user_id]) if session[:user_id] end helper_method:current_user...

उपयोगकर्ता मॉडल

अब अपने उपयोगकर्ताओं के लिए एक मॉडल तैयार करें। ऐसा करने के लिए कमांड चलाएँ।

रेल जेनरेटेड मोडोएल यूजर प्रोवाइडर:स्ट्रिंग यूआईडी:स्ट्रिंग नेम:स्ट्रिंग टोकन:स्ट्रिंग सीक्रेट:स्ट्रिंग प्रोफाइल_इमेज:स्ट्रिंग

इससे इस तरह दिखने वाली माइग्रेशन फ़ाइल जेनरेट होनी चाहिए.

#xxxxxx_create_users.rbclass CreateUsers  

अब अपना डेटाबेस चलाकर माइग्रेट करें:

रेक डीबी:माइग्रेट करें

अपना उपयोगकर्ता मॉडल खोलें और इसे इस तरह बनाएं:

#app/models/user.rbclass User  

उपरोक्त कोड उपयोगकर्ता से संबंधित कुछ जानकारी संग्रहीत करता है। इसमें उपयोगकर्ता का नाम, profile_image, टोकन और रहस्य शामिल है। यदि आपके आवेदन को इससे अधिक की आवश्यकता है, तो आप OmniAuth-Twitter पृष्ठ देख सकते हैं।

सत्र हटाना

अपने आवेदन में, आप उपयोगकर्ताओं को लॉग आउट करने की क्षमता प्रदान करना चाहते हैं। आपको एक destroy की आवश्यकता होगी आपके SessionsController . में कार्रवाई इसके लिए काम करने के लिए। फिर आपके नेविगेशन में एक लिंक जोड़ दिया जाएगा।

destroy जोड़ें आपके SessionsController . पर कार्रवाई ।

#app/controllers/sessions_controller.rb... def नष्ट अगर current_user session.delete(:user_id) flash[:success] ="सफलतापूर्वक लॉग आउट!" रीडायरेक्ट_को root_path समाप्त करें...

फिर अपने नेविगेशन में लॉग आउट करने के लिए इस लिंक को जोड़ें, ताकि आपका नेविगेशन इस तरह दिखे।

#app/views/layouts/_navigation.html.erb