2011-03-09 19 views
17

मैं एक Facebook अनुप्रयोग टैब पर काम कर रहा हूँ और के रूप में यहाँ प्रलेखित हस्ताक्षरित अनुरोध बंडल का उपयोग करना चाहते हैं: http://developers.facebook.com/blog/post/462/फेसबुक आइफ्रेम टैब हस्ताक्षरित अनुरोध हमेशा खाली

मैं their example code उपयोग करने के लिए हस्ताक्षरित अनुरोध unpackage कोशिश कर रहा हूँ जिसे माना जाता है कि टैब पर पास किया गया है, हालांकि, $_POST, $_GET, और $_REQUEST हमेशा खाली होते हैं।

सटीक कोड कैनवास पृष्ठ पर काम करता है और मैं हस्ताक्षरित अनुरोध को पार्स करने में सक्षम हूं।

क्या ऐसी कोई चीज है जिसे मैं अपनी हाल की घोषणा में याद कर रहा हूं?

वैसे, ऐप बाजार में प्रकाशित नहीं है, और मेरे टैब पर स्थापित प्रशंसक निजी है। क्या इससे कोई फर्क पड़ता है?

-सेठ

उत्तर

40

ठीक है, इसे समझ लिया! ऐप को कॉन्फ़िगर करते समय, मैंने "टैब URL" को "टैब /" में भर दिया था, इसने टैब पेज पर पूरा यूआरएल बनाया "http://www.example.com/myfacebookapp/tab/" यह मुझे समझ में आया।

जाहिर है, फेसबुक इसे पसंद नहीं करता है। मेरे "टैब यूआरएल" को 'टैब/इंडेक्स.एफपी' में बदलने के बाद, हस्ताक्षर अनुरोध ऐप टैब में दिखाना शुरू हो गया!

+0

रॉक पर में की तरह के रूप में प्रमाणीकृत। इससे मुझे अभी मदद मिली। – ceejayoz

+0

यह मेरे लिए तय है। धन्यवाद! –

+0

आप सही हैं, लेकिन आंशिक रूप से। यह फेसबुक का मामला नहीं है। फेसबुक डेवलपर क्षेत्र में निर्दिष्ट यूआरएल पर हस्ताक्षरित अनुरोध भेजता है। मेरे मामले में, मैंने टैब URL के रूप में 'mydomain.com/tab /' डाला, लेकिन क्या होता है कि मेरी पसंद का ढांचा 'mydomain.com/tab/'' mydomain.com/tab' पर रीडायरेक्ट करता है (नोटिस कोई पिछला स्लैश नहीं)। यह रीडायरेक्ट (बस कहा गया) प्राप्त है, इसलिए हस्ताक्षरित अनुरोध खो गया है। आपके मामलों में आपको गैर-पीछे वाले स्लैश यूआरएल से पीछे की ओर स्लैश वाले यूआरएल पर रीडायरेक्ट किया जाता है जो हस्ताक्षरित अनुरोध हानि का कारण बनता है। – Andreyco

4

धन्यवाद सेठ मुझे एक ही समस्या थी। मुझे ऐप पर एक हस्ताक्षरित अनुरोध मिल सकता था कैनवास पेज लेकिन की नहीं मेरा पेज टैब। स्पष्टीकरण के लिए

  1. जाने अपने अनुप्रयोग
  2. की सेटिंग संपादित करें पर
  3. क्लिक www.facebook.com/developers/ करने पर फेसबुक एकता टैब
  4. क्लिक करें टैब यूआरएल फ़ील्ड में पेज टैब सेक्शन में नीचे index.php पेज के पथ में प्रवेश करें ई आपके फेसबुक लैंडिंग पृष्ठ

पूर्व। यदि आपका पृष्ठ www.foobar.com/facebook/tab/index.php पर स्थित है तो आपको केवल "टैब /"

की तुलना करने की कोशिश करने के बजाय "टैब/index.php" (उद्धरण के बिना) डालने की आवश्यकता है यह दिनों के लिए बाहर!

4

मुझे एक समाधान मिला: बस टैब यूआरएल के अंत में एक "/" डालें। पसंद है: "http://domain.us/facebook/tab/"

यह मेरे लिए काम करता है, हमें बताएं कि यह आपके लिए भी काम करता है!

+0

यह इतना गूंगा है कि फेसबुक इसके बारे में चेतावनी नहीं देता है, टिप के लिए धन्यवाद, यह बहुत समय बचा है। – destan

8

अनिवार्य रूप से, समस्या यह है कि आपका वेबसर्वर अनुरोध प्राप्त करते समय रीडायरेक्ट कर रहा है। आपके मामले में, यह http://www.example.com/myfacebookapp/tab/ से http://www.example.com/myfacebookapp/tab/index.php पर रीडायरेक्ट कर रहा है; मेरे मामले में यह http://www.example.com/myfacebookapp/tab से http://www.example.com/myfacebookapp/tab/ पर रीडायरेक्ट कर रहा था (मेरा ऐप नेट एमवीसी में बनाया गया है, इसलिए इसमें कोई फ़ाइल नाम नहीं है, लेकिन स्पष्ट रूप से उस पिछली स्लैश की आवश्यकता है)।

तो कैननिकल समाधान यह सुनिश्चित करना है कि टैब यूआरएल फ़ील्ड में पथ वास्तविक यूआरएल है, जो वेबसर्वर रीडायरेक्ट नहीं करेगा।यदि वेबसर्वर को रीडायरेक्ट करना है, तो वास्तविक पृष्ठ GET (POST नहीं) द्वारा प्राप्त किया जाता है और signed_request पोस्ट स्क्रिप्ट आपकी स्क्रिप्ट पर प्रदान नहीं किया जाता है।

बहुत निराशाजनक; मैं सिर्फ एक डेढ़ डिबगिंग खर्च करता हूं क्यों मेरा टेस्ट ऐप काम करता था और उत्पादन एक नहीं था। चीजों को और खराब करने के लिए, मुझे यह जवाब पता था, उसने अभी पंजीकरण नहीं किया था कि समस्या यही थी। बहुत परेशान!

+0

यह दुर्भाग्य से कैनवास ऐप्स के लिए नहीं किया जा सकता है क्योंकि उन्हें '0' –

+0

के साथ समाप्त होना चाहिए जो निश्चित रूप से मामला नहीं था; मैंने हाल ही में चेक नहीं किया है, लेकिन मुझे लगता है कि आप वहां गलत हो सकते हैं। –

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