13

मुझे लगता है कि यह फेसबुक/एंड्रॉयड डेवलपर्स के एक बहुत प्रभाव हो सकता है और अभी तक वहाँ विषय पर है कि काफी चर्चा हो प्रतीत नहीं होता है ...क्या एंड्रॉइड ऐप में विस्तारित ऐक्सेस टोकन के साथ फेसबुक टोकन का विस्तार करना संभव है?

मेरा प्रश्न

किसी को भी सफलतापूर्वक एक ताज़ा किया गया है expandAccessTokenIfNeeded फ़ंक्शन का उपयोग कर टोकन? यदि आपको सफलता मिली है, तो उपकरण (या एमुलेटर) किस संस्करण पर चल रहा था?

पृष्ठभूमि

मैं कह रहा offline_access अनुमति 1st मई 2012 से बहिष्कृत कर दिया जाएगा और फेसबुक अपने नवीनतम एसडीके के उन्नयन की सिफारिश की फेसबुक से एक ईमेल प्राप्त। ठीक।

मैं नवीनतम एसडीके में अपग्रेड किया गया, आधिकारिक फेसबुक ऐप मेरे डिवाइस पर स्थापित है और (अंततः!) सिंगल साइन ऑन ठीक काम कर रहा है। मुझे 60 दिन टोकन मिल रहे हैं जो फिर ठीक है।

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

सबसे स्पष्ट जवाब यह है कि मैं कुछ गलत कर रहा हूं, लेकिन, bug report फेसबुक पर सबमिट किया गया था कि ... "चाहिएExtendAccessToken व्यावहारिक रूप से लगभग हमेशा झूठी वापसी करेगा।" इस रिपोर्ट को प्राथमिकता "इच्छासूची" दी गई है।

extendAccessTokenAsNeeded करने के लिए विकल्प()

Facebook documentation about offline_access deprecation टोकन में ग्राफ़ एपीआई का उपयोग बढ़ाया जा सकता है। हालांकि इसमें यूआरएल में disadvantage of needing the "App Secret" शामिल है। एक फायदा यह है कि उपयोगकर्ता को अपने डिवाइस पर आधिकारिक फेसबुक ऐप इंस्टॉल करने की आवश्यकता नहीं होगी।

अन्य विचारों और चिंताओं

  • Facebook.java में extendAccessTokenIfNeeded समारोह बदलते हमेशा सच लौटने के लिए, मैं मैं एक बार ताज़ा करने के लिए मिल गया लगता है। (कारण मैं कहता हूँ "लगता है कि" है, क्योंकि यह व्यवहार को दोहराने नहीं है और मुझे लगता है मैं एक और सफलता का कोई मौका पहले एक और 24 घंटे इंतजार करना पड़ता है)

  • मैं देखा कि Hackbook AndroidHttpClient की आवश्यकता है आयातित किया जाना है। यह केवल एपीआई 8 के लिए उपलब्ध है। क्या इसका मतलब है कि फेसबुक एसएसओ (विशेष रूप से टोकन रीफ्रेशिंग) केवल एपीआई 8 और बाद वाले उपकरणों पर काम करने की संभावना है?

  • Facebook.apk included in the SDK काफी पुराना है। शायद यही कारण है कि टोकन एपीआई 8 और बाद में चलने वाले अनुकरणकों पर ताज़ा नहीं होते?

  • और आखिरकार, यह सब केवल उन लोगों से संबंधित है जिनके पास आधिकारिक फेसबुक ऐप इंस्टॉल है! आधिकारिक फेसबुक ऐप के बिना उन लोगों के लिए एक और तरीका पूरा करने की आवश्यकता है (अभी शिकायत कर रहा है!)

प्रासंगिक फेसबुक लिंक

Facebook-Android-SDK at GitHub

Facebook Android Tutorial

Facebook offline_access permission deprecation

Facebook bug report

संबंधित स्टैक ओवरफ़्लो सवालों

Facebook 60 day access token and Deprecated Offline_Access

Facebook access token can not be extended

How would offline_access work after deprecation after May 1st?

Facebook access token can not be extended

Protecting app secret for extendAccessToken usage (Java/Android)

+0

"फेसबुक.जेवा में विस्तारित एक्सेटोकनइफनिएड फ़ंक्शन को बदलकर हमेशा सच होने के लिए, मुझे लगता है कि मुझे इसे एक बार रीफ्रेश करने के लिए मिला है। (कारण मैं कहता हूं" सोचो "क्योंकि यह व्यवहार को दोहराएगा और मुझे संदेह है कि मुझे करना है दूसरी सफलता के किसी भी मौके से 24 घंटे पहले इंतजार करें) "क्या आपने पुनः प्रयास किया है? – nmr

उत्तर

3

मैं Android विकास पता नहीं है, लेकिन आप उस समारोह के साथ मुद्दों कर रहे हैं, शायद वहाँ एंड्रॉयड भीतर कर्ल का एक समान कार्य है कि आप 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

फोन करने की अनुमति देगा है (गूगल से पता चला: http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html कैसे से कर्ल करने के लिए पर एंड्रॉइड)

+0

आपके उत्तर के लिए धन्यवाद। मैं जांच करूंगा। – Mel

+1

मुझे नहीं लगता कि यह काम करेगा, और मुझे नहीं लगता कि यह एक अच्छा विचार है। मुझे लगता है कि यह एक अच्छा विचार नहीं है क्योंकि इसका मतलब है कि आपके एंड्रॉइड ऐप में अपने क्लाइंट_सेक्रेट को एम्बेड करना, जिसका मतलब है कि यह सार्वजनिक है, जो खराब है। मुझे नहीं लगता कि यह काम करेगा क्योंकि यह एंडपॉइंट अपने मूल 60 दिन की समाप्ति से पहले टोकन तक पहुंचने में सक्षम नहीं प्रतीत होता है। (हालांकि, 2 घंटे क्लाइंट साइड ऑथ टोकन को 60 दिन टोकन में विस्तारित करने के लिए अच्छा है।) – nmr

+1

कॉल दूरस्थ वेब-सर्वर से किया जाना चाहिए जहां क्लाइंट_सेक्रेट वास्तव में गुप्त है। तो आप CURL का उपयोग कर एंड्रॉइड से रिमोट वेब सर्वर पर AJAX कर सकते हैं। – DMCS

1

REFRESH_TOKEN_BARRIER का समय बदलने का प्रयास करें, ताकि आपको हर बार 24 घंटे का इंतजार न करना पड़े। मैंने अपनी लगभग 2 मिनट तक बदल दिया, और मैं देख सकता था कि जब मैं 2 मिनट के बाद ऐप लॉन्च करता हूं तो एक्सेस टोकन वास्तव में बढ़ाया जा रहा था।

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