2012-01-21 4 views
14

शीर्षक अधिकांश प्रश्नों से बात करता है, लेकिन मुझे अपने मस्तिष्क को लपेटने में कठिनाई हो रही है कि मेरे पास फेसबुक प्रमाणीकृत उपयोगकर्ताओं को अपनी साइट के एपीआई तक पहुंच कैसे प्राप्त है।लॉग इन/खाता निर्माण के लिए फेसबुक कनेक्ट का उपयोग करते समय मैं अपनी साइट के एपीआई के साथ प्रमाणित कैसे करूं?

उपयोगकर्ता द्वारा एफबी के साथ प्रमाणित करने के बाद मेरे पास उपयोगकर्ता के बारे में थोड़ी सी जानकारी उपलब्ध है, लेकिन प्रमाणीकरण के लिए मेरे अपने सुरक्षित API सर्वर के साथ पास करने के लिए कोई एपीआई कुंजी या उपयोगकर्ता नाम/पासवर्ड नहीं है।

मैं कई संबंधित सवाल मिल गया है, लेकिन यहां एक आदर्श जवाब की तरह लगता है:

किसी भी मदद की बहुत सराहना की जाएगी!

+1

जब आप कहते हैं कि 'आपकी अपनी साइट एपीआई' क्या आपको ब्राउज़र और आपकी वेबसाइट के बीच कॉल प्रमाणीकृत करने का मतलब है, या क्या आपका मतलब है कि कोई भी/कोई भी उपभोग कर सकता है, जैसे तृतीय पक्ष और मोबाइल डिवाइस? – spotman

+3

@ स्पॉटमैन - वास्तव में डिक होने की बजाय सहायक होने के लिए धन्यवाद। मेरी साइट डेटाबेस कनेक्शन के बजाय सामग्री प्राप्त करने के लिए अपने स्वयं के एपीआई का उपयोग करती है। मैं उन्हें एफबी कनेक्ट के साथ वेब तरफ प्रमाणित कर रहा हूं, लेकिन मैं फिर से बारी करने और अपने स्वयं के एपीआई के साथ प्रमाणित करने के लिए सबसे अच्छी विधि का शिकार कर रहा हूं। बेसिक ऑथ कर रहा था, लेकिन एफबी कनेक्ट उपयोगकर्ताओं के पास प्रमाणीकरण के लिए पासवर्ड नहीं हैं। एक बार फिर धन्यवाद। – gstjohn

उत्तर

10

चूंकि आप फेसबुक उपयोगकर्ताओं के माध्यम से अपने उपयोगकर्ताओं को प्रमाणित कर रहे हैं, तो आप उपयोगकर्ता के बारे में पर्याप्त जानते हैं।

authentication flow की परवाह किए बिना उपयोग कर रहे हैं, तो आप

कदम # 1 करेंगे: एक access_token और एक expire पैरामीटर प्राप्त करते हैं। सबसे अधिक संभावना है कि आपने user_id से भी अनुरोध किया है (यदि आप जेएस-एसडीके का उपयोग कर रहे हैं तो यह इनमें से अधिकांश को संभालेगा)।

कदम # 2: एक टुकड़े किए गए स्ट्रिंग में इन जानकारी (access_token, expire & user_id) संपुटित, उदा नकल फेसबुक signed_request प्रारूप।

कदम # 3: अपने API समाप्ति-बिंदु में, डिक्रिप्ट/अपने टुकड़ों में बंटी स्ट्रिंग डिकोड और expire सत्यापित करें: अपनी खुद की API कॉल में यह टुकड़ों में बंटी स्ट्रिंग भेजें:

https://mydomain.com/apis/getUserSecretData?fb_oauth=my_hashed_string&vars=my_other_vars 

कदम # 4 पैरामीटर और यदि access_token की समयसीमा समाप्त हो गई है, तो आपको एक नए अनुरोध करने और अपनी एपीआई कॉल दोहराने की आवश्यकता है।

+1

मुझे यह वाकई पसंद है! बहुत उपयोगी होने के लिए धन्यवाद। एक फॉलो-अप प्रश्न: चरण # 4 के बाद यह मेरे एपीआई एंडपॉइंट को क्लाइंट को एपीआई कुंजी वापस करने के लिए सुरक्षित है, जो इसके बाकी अनुरोधों के लिए उपयोग कर सकता है या क्या मुझे अपने सभी अनुरोधों को एक साइन_रेक्वेस्ट में रखना चाहिए? – gstjohn

+1

समस्या यह है कि यदि कोई दुर्भावनापूर्ण उपयोगकर्ता आपके ऐप को डिमंपाइल करता है और अनुरोध पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी प्राप्त करता है तो वे किसी भी ऑथ टोकन का उपयोग मनमाने ढंग से उपयोगकर्ता आईडी के साथ कर सकते हैं क्योंकि आप उपयोगकर्ता के खिलाफ उपयोगकर्ता को मान्य नहीं कर रहे हैं। यह एक मुद्दा है जब एप्लिकेशन एक मोबाइल ऐप है क्योंकि इसे अपनाना आसान है। वेब ऐप के लिए यह इतना महत्वपूर्ण नहीं है क्योंकि आपकी एन्क्रिप्शन कुंजी वेब सर्वर पर सुरक्षित रूप से संग्रहीत की जाएगी।यह प्रश्न दिखाता है कि एपीआई http://stackoverflow.com/questions/4817991/facebook-connect-to-authenticate-on-a-personal-api से लिखित के खिलाफ उपयोगकर्ता आईडी को कैसे सत्यापित किया जाए –

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