2012-01-25 20 views
13

क्या फेसबुक एपीपी एक्सेस टोकन की समय सीमा समाप्त हो गई है? ये टोकन उपयोगकर्ता टोकन से अलग हैं; वे इस तरह का अधिग्रहण कर रहे:फेसबुक ऐप (उपयोगकर्ता नहीं) पहुंच टोकन समाप्ति

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={0}&client_secret={1}) 

http://developers.facebook.com/docs/authentication/ पर दस्तावेज़ के अनुप्रयोग लॉग खंड में वर्णित के रूप में।

क्या कोई परिस्थिति है जिसके अंतर्गत वे अमान्य हो जाएंगे?

एनबी: यह उपयोगकर्ता पहुंच टोकन (जो स्पष्ट रूप से प्रलेखित हैं) के बारे में कोई सवाल नहीं है। उपयोगकर्ता पहुंच टोकन के बारे में एक और प्रश्न के डुप्लिकेट के रूप में एक समान प्रश्न http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire गलत तरीके से बंद किया गया था।

उत्तर

4

मुझे पता है कि एक शर्त जो उन्हें अमान्य बनने का कारण बनती है, यदि आप फेसबुक डेवलपर टूल का उपयोग करके एप्लिकेशन सीक्रेट को रीसेट करते हैं।

मुझे नहीं पता कि ऐप टोकन बनाने के लिए ओएथ विधि का उपयोग करने से यह समाप्ति हो जाएगी। हालांकि, अगर आप फेसबुक के पीएचपी एसडीके स्कैन करते हैं तो, आप देख सकते हैं कि एक गैर-सीमा समाप्त होने एप्लिकेशन टोकन संयोजन APP_ID और गुप्त द्वारा किया जाता है:

/** 
    * Returns the access token that should be used for logged out 
    * users when no authorization code is available. 
    * 
    * @return string The application access token, useful for gathering 
    *    public information about users and applications. 
    */ 
    protected function getApplicationAccessToken() { 
    return $this->appId.'|'.$this->apiSecret; 
    } 

चेतावनी: मैं क्लाइंट-कोड में इसके उपयोग कभी नहीं होगा के रूप में प्रकाशित अपनी ऐप गुप्त हालांकि, एक ट्रस्ट सर्वर पर्यावरण में, ऐसा लगता है कि जाने का तरीका है।

इसका परीक्षण करने के लिए, मैं ओपनग्राफ टूल पर गया और अपना एक्सेस टोकन मिटा दिया और कोड नमूना से समेकित मूल्य में टाइप किया। इसके बाद मैंने यह सत्यापित करने के लिए अपने ऐप की अंतर्दृष्टि का उपयोग किया कि यह काम करेगा:

<APP_ID>/insights/application_active_users 
+0

धन्यवाद, यह काम करता है। लेकिन ऐप एक्सेस टोकन प्राप्त करने की यह विधि एक सुरक्षित विधि है जो सार्वजनिक एपीआई का हिस्सा नहीं है। मुझे भरोसा नहीं है कि यह बदलेगा और लाखों लोगों के साथ लाइव साइट पर इसका उपयोग नहीं करेगा उपयोगकर्ता। (सार्वजनिक एपीआई तोड़ने के लिए फेसबुक कुख्यात है, इस तरह कुछ अकेले रहने दें) ऐसा प्रतीत होता है कि यूआरएल (प्रश्न में उल्लिखित) से प्राप्त ऐप एक्सेस टोकन समाप्त हो गया है; रातोंरात मैंने अपने परीक्षण में अपवाद देखना शुरू कर दिया पर्यावरण लॉग: एक्सेस टोकन को सत्यापित करने में त्रुटि: सत्र यूनिक्स समय 1327539600 पर समाप्त हो गया है। वर्तमान यूनिक्स समय 1327605009 है। – eugen

+0

फेसबुक के लिए स्वीकृत एसडीके के साथ एक ब्रेक-चेंज को अचानक शुरू करने की संभावना बहुत कम होगी। आमतौर पर, फेसबुक प्रदान करेगा के लिए एक रोडमैप उनके स्वीकृत पुस्तकालयों के साथ परिवर्तन तोड़ना। Https://developers.facebook.com/roadmap/ अक्सर जांचें। – thesmart

+0

अलास, पहले पहले हाथ अनुभव से, यह फेसबुक एपीआई तोड़ने वाले परिवर्तनों को देखने की संभावना है। मैंने अभी उपर्युक्त एक का उल्लेख किया है: ऐप एक्सेस टोकन की अवधि समाप्त हो जाती है, हालांकि दस्तावेज़ीकरण यह नहीं बताता है। इससे भी बदतर, त्रुटि कोड लौटाया गया है 0 (अर्थ सफलता !?)। त्रुटि कोड को एपीआई के हिस्से के रूप में माना जाना चाहिए, अन्यथा डेवलपर्स को कोई सुरक्षा गार्ड नहीं छोड़ा जाता है। बीटीडब्लू, क्या फेसबुक त्रुटि कोड की एक निश्चित गैर-बदलती सूची वाला कोई स्थान है? – eugen

4

एक APP_ACCESS_TOKEN बनाना वास्तव में आसान है। आप अपने App ID/API Key और App secret

access_token = YOUR_APP_ID|YOUR_APP_SECRET 

उदाहरण का उपयोग कर सकते हैं: +१२३४५८७९६८ | bghyuifjk3438483249235903502035023504305

+0

धन्यवाद, मुझे पता है कि। सवाल यह था कि क्या ये टोकन समाप्त हो गए हैं (और बाद की टिप्पणी मैंने बनाई है कि ऐसा लगता है कि ऐसा होने पर त्रुटि कोड वापस नहीं आता है)। – eugen

+0

यह सच नहीं है, बाद वाला हिस्सा ऐप रहस्य नहीं है। आप इसे फिर से जांचना चाहेंगे। –

+0

कृपया मेरी टिप्पणी पर दिनांक की जांच करें, कृपया। – tildy

27

प्रति Facebook documentation:

ऐप पहुंच टोकन अपने अनुप्रयोग गुप्त का उपयोग करके हस्ताक्षरित किया जाता है और समाप्त नहीं होगी; यदि आप अपने आवेदन गुप्त को फिर से कुंजी/रीसेट करते हैं तो इसे अमान्य कर दिया जाएगा।

0

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

"अपने उपयोगकर्ताओं को सर्वश्रेष्ठ अनुभव सुनिश्चित करने के अपने app ऊपर परिदृश्यों के लिए त्रुटियों को पकड़ने के लिए तैयार रहने की जरूरत है। निम्नलिखित PHP कोड इन त्रुटियों को संभालने और एक नया पहुँच टोकन प्राप्त करने आपको पता चलता है।

जब आप उपयोगकर्ता को ऑथ डायलॉग पर रीडायरेक्ट करते हैं, तो उपयोगकर्ता को अनुमति के लिए संकेत नहीं दिया जाता है यदि उपयोगकर्ता पहले से ही आपके आवेदन को अधिकृत कर चुका है। फेसबुक आपको किसी भी उपयोगकर्ता के सामने संवाद के बिना वैध पहुंच टोकन वापस कर देगा। हालांकि यदि उपयोगकर्ता ने आपके आवेदन को अधिकृत किया है तो access_token प्राप्त करने के लिए उपयोगकर्ता को आपके एप्लिकेशन को फिर से अधिकृत करने की आवश्यकता होगी।"संसाधन: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

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