मेरे रेल वेब प्रोजेक्ट में, उपयोगकर्ता ट्विटर से प्रमाणित करते हैं। शपथ प्रक्रिया में उपयोगकर्ता शामिल होता है, एक ट्विटर वेब फॉर्म के माध्यम से ट्विटर लॉगिन क्रेडेंशियल दर्ज करना और यह अच्छी तरह से काम करता है। मैं जानना चाहूंगा कि क्या उपयोगकर्ता के लिए ट्विटर के मोबाइल ऐप के माध्यम से मेरे वेब प्रोजेक्ट को अधिकृत करना संभव है यदि उपयोगकर्ता ने इसे स्थापित किया है।

इसलिए मूल रूप से, जब कोई उपयोगकर्ता मेरे वेब प्रोजेक्ट पर जाता है और "ट्विटर के साथ साइन इन" पर क्लिक करता है, तो प्राधिकरण प्रक्रिया ट्विटर के मोबाइल ऐप में होनी चाहिए यदि उपयोगकर्ता ने इसे इंस्टॉल किया है, अन्यथा यह वेब फॉर्म का उपयोग करता है। मैंने केवल पेरिस्कोप मोबाइल ऐप के साथ इस संभावना को देखा है, जहां ट्विटर के मोबाइल ऐप में ट्विटर के लिए प्राधिकरण होता है। क्या यह संभव है क्योंकि मेरी परियोजना वेब आधारित है? दिलचस्प बात यह है कि मेरे वेब प्रोजेक्ट में मेरे ट्विटर प्रोफाइल का लिंक है और जब मैं उस पर क्लिक करता हूं तो वह लिंक मेरा मोबाइल ट्विटर ऐप खोलता है।

यह वर्तमान शपथ प्रक्रिया है जो मेरे पास मेरे रेल ऐप में है। यह मेरे उपयोगकर्ता मॉडल से प्रासंगिक कोड है

 def self.from_omniauth(auth)
    user = find_or_initialize_by(provider: auth.provider, uid: auth.uid)
    user.email = auth.info.email
    user.password = Devise.friendly_token[0, 20]
    user.name = auth.info.name
    user.username = auth.info.nickname
    user.location = auth.info.location
    user.access_token = auth.credentials.token
    user.access_secret = auth.credentials.secret
    user.access_token = user.encrypt_field(user.access_token)
    user.access_secret = user.encrypt_field(user.access_secret)
    user.save!
    return user
  end

मेरे उपयोगकर्ता नियंत्रक में, मेरे पास है

 def twitter
    @user = User.from_omniauth(request.env["omniauth.auth"])
    if @user.persisted?
      sign_in_and_redirect @user, event: :authentication #this will throw if @user is not activated
      set_flash_message(:notice, :success, kind: "Twitter") if is_navigational_format?
    else
      session["devise.twitter_data"] = request.env["omniauth.auth"].except("extra")
      redirect_to new_user_registration_url
    end
  end

मेरे जेमफाइल में, मेरे पास है

gem 'devise'
gem 'omniauth'
gem 'omniauth-twitter'
gem 'twitter'

यह वेब फॉर्म आधारित प्रमाणीकरण के साथ अच्छी तरह से काम करता है। मैं जानना चाहता हूं कि अगर उपयोगकर्ता ने इसे स्थापित किया है तो ट्विटर के फोन ऐप के माध्यम से प्रमाणित और अधिकृत करना संभव है या नहीं।

0
Hakeem Baba 11 नवम्बर 2020, 00:52

1 उत्तर

सबसे बढ़िया उत्तर

वेब आधारित प्रवाहों के लिए, OAuth प्रवाह ट्विटर वेबसाइट पर होगा, ऐप पर नहीं। अब-बहिष्कृत TwitterKit का उपयोग करने वाले नेटिव ऐप्स के लिए मूल मोबाइल प्रवाह समर्थित थे।

1
i_am_daniele 13 नवम्बर 2020, 05:14