2011-07-08 17 views
7

प्राप्त करने के लिए फेसबुक जावास्क्रिप्ट एसडीके का उपयोग कर अब ठीक हो गया! लेकिन मैं अभी तक अपने प्रश्न का उत्तर नहीं दे सकता। नीचे मेरी टिप्पणी देखें। और मदद के लिए धन्यवाद।ग्राफ डेटा


मैंने दस्तावेज़ों की खोज और खोज और पढ़ा है और अभी भी इसे समझ नहीं सकते हैं।

मेरे पास एक ईवेंट के बारे में एक वेब पेज है। मेरे कार्यक्रम के लिए एक सार्वजनिक फेसबुक "घटना" भी है। मैं फेसबुक ईवेंट के लिए उपस्थित लोगों की संख्या प्राप्त करने के लिए एफबी जावास्क्रिप्ट एसडीके का उपयोग करने की कोशिश कर रहा हूं और इसे वेबसाइट के माध्यम से पंजीकृत लोगों की संख्या में जोड़ता हूं।

मैंने एक ऐप बनाया है और मेरे पास एक एपआईड और गुप्त स्ट्रिंग है। मैं से एक पहुंच टोकन प्राप्त कर सकते हैं:

https://graph.facebook.com/oauth/access_token?client_id=XXXX&client_secret=XXXXX&grant_type=client_credentials

और मैं तो उस पहुँच टोकन का उपयोग एक सार्वजनिक समारोह में शामिल होने वाले प्राप्त करने के लिए कर सकते हैं:

https://graph.facebook.com/331218348435/attending?access_token=XXXXXXXXX

सब ठीक है यही कारण है कि।

अब मैं जावास्क्रिप्ट एसडीके का उपयोग करके यह वही काम करने की कोशिश कर रहा हूं।

मैं एसडीके लोड कर दिया है और एक init किया:

FB.init({ 
    appId : 'XXXXXXXX', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true // parse XFBML 
}); 

और मुझे पता है क्योंकि मैं डेटा के साथ एक वस्तु है कि एक पहुँच टोकन की जरूरत नहीं है प्राप्त कर सकते हैं एसडीके काम कर रहा है:

FB.api('/331218348435', function (response) { console.log (response) }); 

लेकिन जब मैं उपस्थित लोगों का डेटा कि पहुँच टोकन की आवश्यकता होगी प्राप्त करने की कोशिश:

FB.api('/331218348435/attending', function (response) { console.log (response) }); 

मैं एक OAuthException मिल : "इस संसाधन का अनुरोध करने के लिए एक एक्सेस टोकन की आवश्यकता है।"

सभी ट्यूटोरियल और जानकारी जो मैं पा सकता हूं, सभी को .login विधि का उपयोग करने के लिए संदर्भित किया जाता है, लेकिन मैं नहीं चाहता कि कोई उपयोगकर्ता लॉगिन करे, मैं बिना किसी उपयोगकर्ता इंटरैक्शन के अपने ऐप आईडी का उपयोग करके लॉगिन करना चाहता हूं।

मुझे लगता है कि एपीआई ने एसडीके के इनिट अनुरोध को लिया और मुझे एक टोकन दिया जब मैंने .init विधि कहा, प्रमाणीकरण मेरी वेबसाइट के पते के खिलाफ किया जा रहा है (HTTP रेफरर - हाँ मैंने अपनी वेबसाइट यूआरएल सेट की है फेसबुक ऐप सेटिंग्स में)।

कोई विचार क्या यह काम नहीं कर सकता है? मैं .login किए बिना जावास्क्रिप्ट एसडीके का उपयोग कर एक्सेस टोकन कैसे प्राप्त कर सकता हूं? क्या मुझे एक कदम याद आ रहा है? क्या यह भी संभव है?

धन्यवाद

+0

मुझे इस बारे में निश्चित नहीं है। कारण यह हो सकता है कि आपके पास ईवेंट में भाग लेने वाले उपयोगकर्ताओं तक पहुंच नहीं है। –

+0

ठीक है, यह अभी तय है लेकिन क्योंकि मैं एक स्टैक ओवरफ्लो नौसिखिया हूं, मैं अपने प्रश्न का उत्तर नहीं दे सकता। ऐसा लगता है कि सेटिंग में बदलाव आया है कि फेसबुक ने कहा था कि वास्तव में एक घंटे में "मिनट" लगेंगे, लेकिन अब सब ठीक है। मदद के लिए धन्यवाद! – magicroundabout

उत्तर

1
के लिए कॉल करने के लिए

ओह। ठीक।

ठीक है, किसी भी कारण से, मैं चले गए और मेरा खाना खाया और जब मैं वापस आ गया तो यह ठीक काम कर रहा है।

जब मैंने अपने ऐप के लिए सेटिंग्स को अपडेट किया तो फेसबुक ने कहा कि सर्वर के चारों ओर परिवर्तन के लिए कुछ मिनट लग सकते हैं। एक घंटे से अधिक समय निकाला!

मेरा कोड ठीक था।

आपकी मदद के लिए धन्यवाद।

3

फार्म क्या बल्कि परिपत्र दस्तावेजों कहते हैं, हो रही है में भाग लेने फ़ीड एक 'सामान्य access_token` की आवश्यकता है। फेसबुक दृष्टि में:

कोई भी मान्य ACCESS_TOKEN कोई भी मान्य पहुँच टोकन हमारे API द्वारा लौटाई। एक टोकन एक्सेस मान्य नहीं हो सकता है, उदाहरण के लिए, यह समाप्त हो गया है। कोई विशेष अनुमति की आवश्यकता नहीं है। कभी-कभी, इसे सामान्य एक्सेस_टोकन के रूप में जाना जाता है।

तो इसका मतलब है कि आप किसी भी टोकन का उपयोग कर सकते हैं जब तक कि उपस्थित होने वाली फ़ीड तक पहुंच न हो, जब तक कि ईवेंट सार्वजनिक न हो। लगता है कि सबसे आसान पहुंच टोकन एक ऐप टोकन प्रतीत होता है: http://developers.facebook.com/docs/authentication/#applogin। आप केवल अपनी ऐप आईडी और सीक्रेट का उपयोग करके यह टोकन प्राप्त कर सकते हैं, और कोई उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है।

लिंक सामग्री summerise करने के लिए: आप

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials 

को GET अनुरोध भेज कर एक आवेदन पहुंच टोकन प्राप्त कर सकते हैं तो आप पाएंगे कि ACCESS_TOKEN उपयोग कर सकते हैं आप में भाग लेने सूची

FB.api('MyEvent/attending?access_token=ACCESS_TOKEN'); 
+0

इसके लिए धन्यवाद, यह सहायक है, लेकिन मैंने पहले ही यह खोज लिया है। मैं वास्तव में जावास्क्रिप्ट में अपना क्लाइंट_सेक्रेट नहीं रखना चाहता हूं जहां कोई इसे पढ़ सकता है। जैसा कि मैंने कहा, मैंने माना कि प्रमाणीकरण एसडीके द्वारा संभाला गया था; यानी, जब मैं init() को कॉल करता हूं, तो यह मेरा ऐप आईडी और HTTP रेफरर लेता है, रेफरर को मेरे द्वारा बनाए गए ऐप की सेटिंग्स में तुलना करता है और मेरे लिए एक एक्सेस टोकन जेनरेट करता है जिसे एसडीके तब प्रबंधित करता है। – magicroundabout

+2

यदि आप जावास्क्रिप्ट में अपना रहस्य प्रकट करने के बारे में चिंतित हैं तो आप PHP पर सर्वर पर एक ही ग्राफ़ कॉल कर सकते हैं और जावास्क्रिप्ट में access_token पास कर सकते हैं। – shanethehat

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