क्या फेसबुक Oauth 2.0 एक्सेस टोकन समाप्त हो रहा है?


124

मैं फेसबुक में Oauth 2.0 प्राधिकरण के साथ खेल रहा हूं और सोच रहा था कि फेसबुक का टोकन टोकन कभी भी समाप्त हो जाए। यदि हां, तो क्या लंबे समय तक पहुंच टोकन का अनुरोध करने का एक तरीका है?


4
इस प्रश्न में कुछ विवरण जोड़ने के लिए: यहां तक ​​कि जब उपयोगकर्ता अपना फेसबुक पासवर्ड बदलता है, तो भी ऑफलाइन_ अमान्य हो जाता है। इसलिए सुरक्षित होने के लिए बेहतर है कि पुराने का उपयोग करते समय त्रुटियां प्राप्त होने पर एक नया एक्सेस टोकन प्राप्त करें।
लॉन्ग

2
संदर्भ जोड़ने के लिए: Developers.facebook.com/blog/post/500
Hoàng Long

2
यो लोग, तुम सब बस रॉक। जो भी प्रश्न है, मैं अभी इसे हल कर लेता हूं ... आप सभी को धन्यवाद
विनय

3
ऐसा लग रहा है कि फेसबुक पहली मई को ऑफलाइन_एक्सेस की अनुमति दे रहा है। भविष्य में सभी एक्सेस टोकन समाप्त हो जाएंगे जब "समय समाप्त" (60 दिन) समाप्त हो गया है, उपयोगकर्ता अपना पासवर्ड बदलता है, उपयोगकर्ता आपके ऐप को डी-अधिकृत करता है, या उपयोगकर्ता लॉग आउट करता है। एपीआई । PS मुझे यकीन नहीं है कि फेसबुक नया "एक्सपायर टाइम" 60 दिनों के लिए सेट कर रहा है अगर एक्सेस टोकन अभी भी लॉगआउट पर समाप्त हो जाएगा (लगता है जैसे उपयोगकर्ता 60 दिनों के भीतर लॉगआउट करने के लिए जाते हैं)। शायद मुझे कुछ याद आ रहा है ... समाप्ति
स्टीवन वेक्सलर

1
Access_token का व्यवहार अब बदल रहा है, आपको जुलाई 2012 के "ब्रेकिंग चेंजेस" को देखना चाहिए - ऑफ़लाइन_एक्सेस अनुमति को पदावनत किया जा रहा है और access_token का लंबा जीवन चक्र होगा।
1928 में कोडीनिन्जा

जवाबों:


64

लगभग थोड़ा खुदाई करने के बाद, मुझे यह मिला। इसका उत्तर प्रतीत होता है:

अपडेट किया गया (11 / अप्रैल / 2018)

  • टोकन लगभग 60 दिनों के बाद समाप्त हो जाएगा।
  • टोकन को प्रति दिन एक बार, 90 दिनों तक ताज़ा किया जाएगा, जब आपके ऐप का उपयोग करने वाला व्यक्ति फेसबुक के सर्वर से अनुरोध करता है।
  • आपके एप्लिकेशन का उपयोग करने वाले व्यक्ति की सहमति से हर 90 दिनों में सभी एक्सेस टोकन को नवीनीकृत करना होगा।

फेसबुक परिवर्तन की घोषणा (10/04/2018)

फेसबुक ने टोकन समाप्ति पृष्ठ अपडेट किया (10/04/2018)

offline_access: किसी भी समय उपयोगकर्ता की ओर से अधिकृत अनुरोध करने के लिए आपके आवेदन को सक्षम करता है। डिफ़ॉल्ट रूप से, अधिकांश एक्सेस टोकन थोड़े समय अवधि के बाद समाप्त हो जाते हैं ताकि यह सुनिश्चित किया जा सके कि एप्लिकेशन तभी सक्रिय रूप से एप्लिकेशन का उपयोग कर रहे हैं जब उपयोगकर्ता की ओर से अनुरोध करें। यह अनुमति लंबे समय तक हमारे OAuth समापन बिंदु द्वारा लौटाए गए पहुँच टोकन को बनाती है।

इसकी अनुमति का अनुरोध किया गया।

http://developers.facebook.com/docs/authentication/permissions

अपडेट करें

कुछ समय पहले offline_access की अनुमति हटा दी गई है।

https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/


2
इसके जवाब में, मैंने एक ओपन सोर्स लाइब्रेरी शुरू की, जो शायद आप लोगों के काम आ सकती है। यह एक oAuth काम है जिसका उद्देश्य सभी सामाजिक नेटवर्क को oAuth कार्यान्वयन के साथ समर्थन करना है। यह पहले से ही ऑफ़लाइन पोस्टिंग सहित विस्तारित अनुमतियों का समर्थन करता है। code.google.com/p/socialoauth
Tendrid

यहां तक ​​कि अगर उपयोगकर्ता फेसबुक पर अपना पासवर्ड बदलता है, तो भी ऑफलाइन_एक्सेस टोकन समाप्त हो जाते हैं।
बेमू

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

24
उनके एपीआई दस्तावेज के अनुसार ऑफलाइन_एक्सेस को अब 2 मई, 2012 तक समर्थन नहीं दिया जाएगा।
बेन लेश

@ आपकी साइट केवल फेसबुक और ट्विटर का समर्थन करती है।
म्योराफ्ट

30

यह कोशिश करो कि यह आपके लिए पूर्ण मदद करेगा

https://graph.facebook.com/oauth/authorize?
    client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
    redirect_uri=http://www.example.com/

लाइफटाइम एक्सेस टोकन प्राप्त करने के लिए आपको उपयोग करना होगा scope=offline_access

मतलब scope=offline_accessयह है कि: -

किसी भी समय उपयोगकर्ता की ओर से अधिकृत अनुरोध करने के लिए आपके आवेदन को सक्षम करता है। डिफ़ॉल्ट रूप से, अधिकांश एक्सेस टोकन थोड़े समय अवधि के बाद समाप्त हो जाते हैं ताकि यह सुनिश्चित किया जा सके कि एप्लिकेशन तभी सक्रिय रूप से एप्लिकेशन का उपयोग कर रहे हैं जब उपयोगकर्ता की ओर से अनुरोध करें। यह अनुमति लंबे समय तक हमारे OAuth समापन बिंदु द्वारा लौटाए गए पहुँच टोकन को बनाती है।

लेकिन फेसबुक के भविष्य के उन्नयन के अनुसार, 3 अक्टूबर, 2012 से ऑफलाइन_सेस की कार्यक्षमता हमेशा के लिए हटा दी जाएगी। और उपयोगकर्ता को 60 दिनों तक लंबे समय तक एक्सेस टोकन दिया जाएगा और एक्सेस टोकन की समाप्ति से पहले फेसबुक सूचित करेगा या आप अपना रिवाज प्राप्त कर सकते हैं फेसबुक एपि से एक्सपायरी वैल्यू प्राप्त करने वाली अधिसूचना कार्यक्षमता ।।


10
मैं आपको सूचित करना चाहूंगा कि fb ने अपने एपीआई में बदलाव किया है और अब कोई लाइफ टाइम टोकन उपलब्ध नहीं है। अब ऑफलाइन एक्सेस 60 दिनों तक सक्रिय रहेगा।
प्रेटेकसूलजा

21

ध्यान दें कि फेसबुक अब टोकन के पक्ष में offline_access अनुमति को हटा रहा है जिसके लिए आप समाप्ति के लिए "अपग्रेड" का अनुरोध कर सकते हैं। मैं अभी इससे निपट रहा हूं, खुद, इसलिए मेरे पास कहने के लिए ज्यादा कुछ नहीं है, लेकिन यह डॉक्टर मदद कर सकता है:

https://developers.facebook.com/docs/offline-access-deprecation/


17

मैं ओपी के रूप में एक ही सवाल के साथ यहां आया था, लेकिन ऑफ़लाइन_का उपयोग करने का सुझाव देने वाले उत्तर मेरे लिए लाल झंडे उठा रहे हैं।

सुरक्षा-वार, किसी उपयोगकर्ता के फेसबुक खाते पर ऑफ़लाइन पहुँच प्राप्त करना गुणात्मक रूप से भिन्न है और फेसबुक पर एकल चिह्न के लिए उपयोग करने की तुलना में अधिक शक्तिशाली है, और इसे हल्के ढंग से उपयोग नहीं किया जाना चाहिए (जब तक कि आपको वास्तव में इसकी आवश्यकता न हो)। जब कोई उपयोगकर्ता इस अनुमति को प्राप्त करता है, तो "एप्लिकेशन" किसी भी समय कहीं से भी उपयोगकर्ता के खाते की जांच कर सकता है। मैंने उद्धरणों में "एप्लिकेशन" डाला क्योंकि यह वास्तव में कोई भी उपकरण है जिसमें क्रेडेंशियल्स हैं - आप उन संपूर्ण उपकरणों को स्क्रिप्ट कर सकते हैं, जिनका वेब सर्वर से कोई लेना-देना नहीं है, जो उपयोगकर्ता उन सभी को साझा करने के लिए सहमत हो सकते हैं जो किसी भी जानकारी तक पहुंच सकते हैं साख।

मैं इस सुविधा का उपयोग छोटे जीवनकाल के आसपास काम करने के लिए नहीं करूंगा; यह इसका अभीष्ट उद्देश्य नहीं है। दरअसल, टोकन आजीवन स्वयं एक सुरक्षा सुविधा है। मैं अभी भी इन टोकन के उचित उपयोग के बारे में विवरण की तलाश कर रहा हूं (क्या मैं उन्हें जारी रख सकता हूं? मुझे उन्हें कैसे सुरक्षित करना चाहिए? क्या फेसबुक OAuth 2.0 को मुख्य के अंदर "ताज़ा टोकन" एम्बेड करता है? यदि नहीं, तो यह कहाँ है? / या मैं कैसे रिफ्रेश करता हूं?), लेकिन मुझे पूरा यकीन है कि offline_access सही तरीका नहीं है।


1
यहाँ एक ही संदेह है। क्या आपको ऑफ़लाइन पहुँच के लिए संग्रहीत टोकन को सुरक्षित करने के बारे में अधिक जानकारी मिली?
नील डिसाइड

फेसबुक के डॉक्स भयानक हैं, लेकिन मुझे लगता है कि स्थिति यह है कि यह ऑफलाइन_access के साथ अधिग्रहीत टोकन तक पहुँचने के लिए लगातार सुरक्षित है। हालांकि यह सच है कि जिस किसी को भी इसका एक्सेस मिल जाता है (जबकि FB उपयोगकर्ता अभी भी लॉग इन है) कुछ भी कर सकता है जिसके लिए उपयोगकर्ता ने आपको अनुमति दे दी है, यह बुरा नहीं है क्योंकि उपयोगकर्ता के फेसबुक से लॉग आउट होते ही टोकन अमान्य हो जाते हैं। कहीं भी। यह अभी भी एक सुरक्षा छेद है (मुझे यह अजीब लगता है कि आपको अपने ऐप को / me रिक्वेस्ट पर गुप्त रूप से आपूर्ति नहीं करनी है), लेकिन यह ओपन-एंडेड नहीं है। अगर किसी को यह बेहतर लगता है तो मुझे सुधारने के लिए स्वतंत्र है।
डेविड पोप

8

हां, वे समाप्त हो जाते हैं। एक 'एक्सपायर' मान है जो 'access_token' के साथ दिया गया है, और जो मैं बता सकता हूं कि यह लगभग 2 घंटे है। मैं खोज कर रहा हूं, लेकिन मुझे लंबे समय तक समाप्ति का अनुरोध करने का कोई रास्ता नहीं दिख रहा है।


3
यदि आप 'offline_access' अनुमति का अनुरोध करते हैं, तो टोकन समाप्त नहीं होगा।
ब्रेंडन बर्ग

1
@ बेंडन: लेकिन जैसे ही यूजर अपना फेसबुक पासवर्ड बदलेगा यह अमान्य हो जाएगा
Hoàng Long

@ HoàngLong इसका कोई संदर्भ है?
चार्ल्स प्रकाश दसारी

6

चूंकि मुझे एक ही समस्या थी - बेन बिडिंगटन से इस विषय पर उत्कृष्ट पोस्ट, जिन्होंने गलत टोकन और अनुरोधों को भेजने के लिए सही प्रकार के साथ इस सभी मुद्दों को स्पष्ट किया।

http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/


4

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

फेसबुक से उद्धृत http://developers.facebook.com/docs/authentication/

नोट: यदि एप्लिकेशन ने ऑफ़लाइन_अधिक अनुमति का अनुरोध नहीं किया है, तो एक्सेस टोकन समयबद्ध है। उपयोगकर्ता द्वारा फेसबुक से लॉग आउट करने पर समयबद्ध पहुंच टोकन भी अमान्य हो जाता है। यदि एप्लिकेशन ने उपयोगकर्ता से ऑफ़लाइन_ अतिरिक्त अनुमति प्राप्त की है, तो एक्सेस टोकन की समाप्ति नहीं होती है। हालाँकि यह तब अमान्य हो जाता है जब भी उपयोगकर्ता अपना पासवर्ड बदलता है।

मान लें कि आप अपने डेटाबेस में एक उपयोगकर्ता तालिका में उपयोगकर्ता के फेसबुक यूआईडी और एक्सेस टोकन को स्टोर करते हैं, हर बार जब उपयोगकर्ता "फेसबुक के साथ लॉगिन" बटन पर क्लिक करता है, तो आप लॉगिन स्थिति फेसबुक जावास्क्रिप्ट एपीआई की जांच करते हैं, और फिर प्रतिक्रिया से कनेक्शन की स्थिति की जांच करते हैं , यदि उपयोगकर्ता आपकी साइट से जुड़ा है, तो आप तालिका में पहुंच टोकन को अपडेट कर सकते हैं।


3

एक लंबे समय तक रहने वाले / नॉन एक्सपायरिंग (पृष्ठों) के लिए एक छोटे से जीवित पहुंच टोकन का आदान-प्रदान करने के लिए इसे मारो:

https://graph.facebook.com/oauth/access_token?             
    client_id=APP_ID&
    client_secret=APP_SECRET&
    grant_type=fb_exchange_token&
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

1

फेसबुक अकाउंट में लॉग इन करें और अपनी एप्लीकेशन सेटिंग्स (अकाउंट -> एप्लीकेशन सेटिंग -> एप्लीकेशन की अतिरिक्त अनुमति जो आपके अकाउंट का उपयोग करें) को एडिट करें। अनुमति अनचेक करें (मेरा डेटा एक्सेस करें जब मैं एप्लिकेशन का उपयोग नहीं कर रहा हूं (offline_access))। जब आप एप्लिकेशन में लॉग इन करेंगे तो फेस एक नया टोकन जारी करेगा।


1

बेसिक फेसबुक टोकन लगभग एक घंटे में समाप्त हो जाता है। लेकिन आप लंबे समय तक चलने वाले टोकन पाने के लिए 'एक्सचेंज' टोकन का उपयोग कर सकते हैं https://developers.facebook.com/docs/facebook-login/access-tokens

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token} 

0

जब आप फेसबुक ग्राफ एपीआई के साथ बातचीत करते हैं तो निम्नलिखित चीजों की जांच करें।

1) एप्लिकेशन कनेक्ट URL आपके "redirect_uri" कनेक्ट URL का आधार होना चाहिए: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2: आपका "redirect_uri" "दोनों मामलों में समान होना चाहिए (जब आप एक सत्यापन कोड के लिए अनुरोध करते हैं और एक एक्सेस_टोकन के लिए अनुरोध करते हैं) पुनर्निर्देशित करें - www.x-minds.org/fb/connect/redirect 3) जब आप अनुरोध करते हैं तो आपको तर्क को सांकेतिक शब्दों में बदलना चाहिए।" जब आप एक access_token के लिए अनुरोध करते हैं तो access_token 4) को तर्क (type = client_cred) पास नहीं करना चाहिए। प्राधिकरण सर्वर सत्र भाग के बिना एक टोकन जारी करेगा। हम ग्राफ एपीआई में "मुझे" उपनाम के साथ इस टोकन का उपयोग नहीं कर सकते। इस टोकन की लंबाई (40) होगी, लेकिन सत्र भाग वाले टोकन की लंबाई (81) होगी। सत्र भाग के बिना एक पहुंच टोकन कुछ मामलों के साथ काम करेगा

जैसे: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM। लेकिन "मुझे" उर्फ ​​के साथ ग्राफ एपीआई केवल सत्र भाग के साथ टोकन के साथ काम करेगा।


0

मुझे नहीं पता कि जब टोकन समाप्त हो जाते हैं, लेकिन वे करते हैं, अन्यथा ऑफ़लाइन अनुमति देने का कोई विकल्प नहीं होगा।

वैसे भी, कभी-कभी उपयोगकर्ता को ऑफ़लाइन अनुमति देने की आवश्यकता होती है, यह ओवरकिल है। आपकी आवश्यकताओं के आधार पर, शायद यह पर्याप्त है कि टोकन तब तक वैध रहता है जब तक उपयोगकर्ता के ब्राउज़र में वेबसाइट खोली जाती है। इसके लिए एक सरल उपाय हो सकता है - उपयोगकर्ता को समय-समय पर iframe का उपयोग करते हुए पुन : उपयोग करना: facebook auto re-login fromieiep

मेरे लिए काम किया ...


0

यह कुछ साल बाद एक उचित है, लेकिन फेसबुक ग्राफ एपीआई एक्सप्लोरर अब एक्सेस टोकन के बगल में थोड़ी जानकारी का प्रतीक है जो आपको एक्सेस टूल ऐप का उपयोग करने की अनुमति देता है, और कुछ महीनों के लिए एपीआई टोकन का विस्तार करता है। विकास के दौरान सहायक हो सकता है।

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.