2012-06-17 12 views
12

मैं वर्तमान में रेल बैकएंड के साथ एक आईफोन ऐप बना रहा हूं। मैं आईफोन पर पूरी तरह से फेसबुक के सिंगल साइन ऑन (एसएसओ) का उपयोग कर रहा हूं और प्रमाणीकरण क्लाइंट एंड पर बहुत अच्छा काम करता है। मैं रेलवे पर बैकएंड के रूप में उपयोग कर रहा हूं।फेसबुक से access_token के साथ रेल प्रमाणीकरण

नोट मैं Design for Facebook authentication in an iOS app that also accesses a secured web service पहले से ही

सलाह ली मुझे लगता है कि वसीयत कुछ token_authenticable कहा जाता है जो मूलतः "टिकट" है कि धागे के चरण 5 में वर्णित है। {: एक्स ACCESS_TOKEN}

  • सर्वर छोर पर इस फोन पर वर्तमान प्रवाह मैं पर

    1. उपयोगकर्ता संकेत देख फेसबुक एसएसओ को
    2. उपयोगकर्ता के साथ myserver.com/sessions/fb_sso को फोन करेगा है (SessionsController # fb_sso पर, मैं ACCESS_TOKEN के साथ फेसबुक के लिए एक API कॉल
    3. तो ACCESS_TOKEN मान्य है, जाँच उपयोगकर्ता db में मौजूद है, तो कर देगा। उपयोगकर्ता मौजूद नहीं है, तो
    4. अब हम {लौट सकते हैं एक नया उपयोगकर्ता बनाने user_id: X, devise_auth_token: Y} कॉल पर वापस 1)

    यह बहुत सीधे आगे है। हालांकि, मेरे पास कुछ प्रश्न हैं:

    1. devise_auth_token के साथ, क्या इसका मतलब है कि मुझे अब साइन_इन ("उपयोगकर्ता", संसाधन) को तैयार करने के लिए कॉल नहीं करना है? (यहां पाया गया http://jessewolgamott.com/blog/2012/01/19/the-one-with-a-json-api-login-using-devise/)
    2. कोड को 3-4 के लिए रखने का सबसे अच्छा स्थान कहां होगा?
    3. मुझे इस विषय के बारे में Google पर बहुत कुछ नहीं लगता है। एक प्रक्रिया के लिए वहां इतने कम ट्यूटोरियल क्यों हैं? क्या मुझे कुछ स्पष्ट रूप से स्पष्ट याद आ रही है?
  • +2

    आप फेसबुक कनेक्टिविटी के लिए Omniauth मणि ​​का उपयोग कर रहे के माध्यम से जाना जा सकता है? मस्तिष्क और सर्वव्यापी संयोजन आपके लिए 3 और 4 का ख्याल रखता है! – MBHNYC

    +0

    @MBHNYC: अगर मैं गलत हूं तो मुझे सही करें, लेकिन यह केवल उस मामले के लिए है जब उपयोगकर्ता वेबसाइट के माध्यम से साइन इन करता है। ओपी के मामले में, उपयोगकर्ता आईफोन ऐप के माध्यम से लॉग इन करता है। वेबसाइट प्रवाह नहीं देखती है। –

    +0

    हां, लेकिन आप अभी भी फेसबुक पर एक ही जानकारी उत्तीर्ण कर रहे हैं और कॉलबैक को किसी भी विचार (या जो भी आईओएस ऐप की आवश्यकता है) प्रस्तुत करने के लिए संशोधित किया जा सकता है, यदि आप सभी devise + omniauth नियंत्रकों/विचारों को उत्पन्न/ओवरराइड करते हैं, अनुरोध को पूरा करने के लिए ओपी के पास सभी प्रोग्रामेटिक टूल्स होना चाहिए। – MBHNYC

    उत्तर

    0

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

    1

    आप omniauth-facebook मणि का उपयोग क्यों नहीं कर सकते हैं। यदि आप अपनी क्षमता का उपयोग करते हैं तो इसका उपयोग टोकन प्राप्त करने का एक बहुत ही आसान समाधान होगा। सुनिश्चित करें कि आपको विभिन्न लॉगिन समय पर अलग-अलग पहुंच टोकन प्राप्त करने की आवश्यकता है।

    आप इस लिंक https://github.com/pramodv-nyros/social-login-in-rails

    संबंधित मुद्दे