2009-02-16 17 views
5

में काम नहीं कर रहे आईफ़्रेम के अंदर फेसबुक कनेक्ट एप्लिकेशन मैं Google गैजेट के अंदर चलने वाला एक फेसबुक कनेक्ट एप्लिकेशन बना रहा हूं। गैजेट होने का मतलब है कि एप्लिकेशन आईफ्रेम के अंदर चलाता है। आवेदन के अंदर, एक ऐसा फॉर्म है जो पंजीकृत उपयोगकर्ताओं को टिप्पणियां पोस्ट करने की अनुमति देता है। सबमिशन AJAX का उपयोग करके किया जाता है, लेकिन मुझे एक सामान्य रूप के साथ एक ही परिणाम मिलते हैं। समस्या यह है कि मुझे उपयोगकर्ता की फेसबुक आईडी प्राप्त करने की आवश्यकता है। Firefox में, यह ठीक काम करता है, लेकिन इंटरनेट एक्सप्लोरर 7 पर, मैं निम्नलिखित त्रुटि मिलती है:आईई 7

'A session key is required for calling this method' 

मुझे विश्वास है कि इस तरह से आईई तीसरे पक्ष के कुकीज़ संभालती है की वजह से है, क्योंकि अगर मैं इंटरनेट विकल्प पर भी जा/गोपनीयता/उन्नत, और स्वचालित कुकी हैंडलिंग को ओवरराइड करें और सभी कुकीज़ स्वीकार करें, यह ठीक काम करता है। मैं जावास्क्रिप्ट से फेसबुक आईडी पास नहीं कर सकता, क्योंकि कोई भी इसे छेड़छाड़ कर सकता है।

संपादित करें: अगर मैं सीधे आईफ्रेम की सामग्री खोलता हूं, तो ऐप ठीक काम करता है। समस्या वास्तव में आईएफआरएएम और आईई सुरक्षा मॉडल के कारण है।

मैं कुछ गलत क्या कर रहा हूं? मैं इस समस्या को कैसे हल करूं?

+0

मैं एक Facebook कनेक्ट अनुप्रयोग है कि एक तीसरी पार्टी साइट पर एक मढ़ा iframe के भीतर चलाता है के साथ एक समान समस्या मार कर रहा हूँ के तहत बनाई गई है इस सूत्र भी देख सकते हैं , सिवाय इसके कि मुझे सफारी और फ़ायरफ़ॉक्स के साथ भी समस्या हो रही है, अगर उपयोगकर्ताओं ने तृतीय पक्ष कुकीज़ स्वीकार नहीं करना चुना है। क्या आपने वहां वही समस्याएं देखी हैं, या क्या मुझे कुछ याद आ रहा है? –

+0

मैंने अन्य ब्राउज़रों पर तृतीय पक्ष कुकीज़ को अवरोधित करने का प्रयास नहीं किया, लेकिन इससे वही समस्याएं होनी चाहिए। मैं एक पॉपअप खोलने के समाधान के लिए चला गया। वास्तव में, फेसबुक अब मेरे पॉपअप के अंदर एक "नकली" पॉपअप का उपयोग करता है, एक और विंडो खोलने के बजाय, जो मेरे लिए ठीक है। –

उत्तर

7

क्या आपने पी 3 पी पॉलिसी जोड़ने का प्रयास किया है?

प्रतिक्रिया कुकी सेट एक कॉम्पैक्ट नीति है, आईई इस का उपयोग करेगा निर्धारित करने के लिए किया जाए या नहीं 3 पार्टी कुकी अनुमति देने के लिए ..

+0

हाय, मुझे इसके बारे में पता नहीं था। मैं जांच करूंगा। आपका बहुत बहुत धन्यवाद! –

1

मुझे एक काम-आसपास मिल गया जो काम करता है, हालांकि यह थोड़ा बदसूरत है: जब उपयोगकर्ता 'लॉगिन' बटन पर क्लिक करता है, तो यह एक पॉपअप खुलता है जो मेरी अपनी साइट से आता है और जिसमें फेसबुक कनेक्ट लॉगिन बटन होता है। उपयोगकर्ता लॉग इन करने के बाद, मैं पॉपअप बंद करता हूं और iframe पुनः लोड करता हूं।

यह वास्तव में बदसूरत है क्योंकि यह दो पॉपअप खोलता है, लेकिन कम से कम यह काम करता है। मैं पता लगाएगा कि कुकीज़ जावास्क्रिप्ट का उपयोग कर सक्षम हैं या नहीं और यदि वे सक्षम हैं, तो मैं पहले पॉपअप को छोड़ दूंगा।

मैं अभी भी बेहतर समाधान के लिए खुला हूँ ...


संपादित: फेसबुक बजाय अब एक और खिड़की खोलने की, मेरे पॉपअप के अंदर एक "नकली" पॉपअप उपयोग करता है। अब मेरे पास केवल एक पॉपअप है जो मेरे लिए ठीक है।

3

मैं संशोधित मैं कैसे की जाँच करता है, तो उपयोगकर्ता था द्वारा एक ही समस्या हल एक एफबी कनेक्ट लॉगिन के बाद PHP पेज पर लॉग इन करें।

तो, वे आईई 7 के साथ एफबी कनेक्ट में लॉगिन करते हैं। अगला और बाद वाला पृष्ठ लोड जहां मुझे सत्यापित करने की आवश्यकता है कि वे वास्तव में फेसबुक में लॉग इन हैं, मैंने निम्नलिखित कोड का उपयोग किया है (ध्यान दें कि $ facebook-> requ_login() और अन्य फ़ंक्शंस काम नहीं करते हैं - वे केवल आईई 7 में शून्य लौटते हैं):

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

$ fb_user_id के पास अब वैध फेसबुक उपयोगकर्ता आईडी होना चाहिए।

के बारे में गोपनीयता नीति और फेसबुक कनेक्ट + आईई 7:

हालांकि यह मेरे लिए काम नहीं था कि यह दूसरों के लिए काम करने के लिए प्रकट होता है।Htaccess में:

Header append P3P "CP=\"HONK\""

या PHP फ़ाइलों में:

header('P3P: CP="CAO PSA OUR"'); या header('P3P: CP="HONK"');

संदर्भ: http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\""); 
} 
+0

अपने कोड में, आप "$ this-> userAPISessionKey" का उपयोग करते हैं, तो "ऑब्जेक्ट" द्वारा किस ऑब्जेक्ट का संदर्भ दिया जाता है ?? धन्यवाद: डी –