2011-01-14 18 views
75

मैं अपने प्रोजेक्ट को फेसबुक के साथ एकीकृत करने की कोशिश कर रहा हूं। मैं पहले बच्चे के कदम उठा रहा हूं और बस लॉगिन करने की कोशिश कर रहा हूं, एक फेसबुक सत्र प्राप्त कर सकता हूं, और कुछ उपयोगकर्ता डेटा प्राप्त कर सकता हूं। मैं इसे स्थानीय स्तर पर विकसित करने कर रहा हूँ तो मेरे फेसबुक आवेदन सेटिंग्स हैं:फेसबुक एपीआई त्रुटि 1 9 1

site URL: http://127.0.0.1:8888/mySite/ 

कैनवास ऊपर दिया गया URL के समान है। मैंने साइट डोमेन निर्दिष्ट नहीं किया है।

हालांकि, जब मैं लॉगिन बटन पर क्लिक करें, मैं कोई त्रुटि मिलती है:

API Error Code: 191 
API Error Description: The specified URL is not owned by the application 
Error Message: redirect_uri is not owned by the application. 

पल मैं रीडायरेक्ट से निपटने के लिए किसी भी सर्वर साइड कोड नहीं लिखा है, आदि सभी मैंने पर किया गया Facebook for Websites में ट्यूटोरियल के आधार पर जावास्क्रिप्ट एसडीके जोड़ दिया गया है।

मैंने क्या गलत किया है? यह स्पष्ट रूप से मेरी फेसबुक एप्लिकेशन सेटिंग्स के साथ कुछ करना है, लेकिन मैं नहीं देख सकता!

+0

पाठकों के लिए: कृपया ध्यान दें कि यह प्रश्न और स्वीकृत उत्तर स्थानीय सर्वर और विकास/परीक्षण, और वास्तविक सर्वर और यूआरएल दोनों पर लागू होता है! – Stefano

उत्तर

87

अद्यतन: 191
redirect_uri बराबर (या रिश्तेदार) होना चाहिए साइट यूआरएल के लिए:

एपीआई त्रुटि कोड का उत्तर दें।
enter image description here

युक्ति: उपयोग आधार विशिष्ट पृष्ठों की ओर इशारा करते पूर्ण URL के बजाय यूआरएल।

अनुशंसित नहीं: उदाहरण के लिए, यदि आप अपने साइट URL के रूप में www.mydomain.com/fb/test.html का उपयोग करें और www.mydomain.com/fb/secondPage.htmlredirect_uri के रूप में होने इस आप 191 त्रुटि दे देंगे।

अनुशंसित: www.mydomain.com/ या www.mydomain.com/fb/: तो बजाय अपने साइट यूआरएल की तरह एक आधार यूआरएल के लिए निर्धारित किया है।


मैं Python sample application आज फेसबुक के माध्यम से चला गया, और मैं हैरान यह स्पष्ट रूप से बताते हुए था कि आप साइट यूआरएल रूप http://localhost:8080/ उपयोग कर सकते हैं, तो आप स्थानीय रूप से विकसित कर रहे हैं था:

Configure the Site URL, and point it to your Web Server. If you're developing locally, you can use http://localhost:8080/

जब मैं था कि आप अपने अनुभव (केवल पुराने परीक्षण के आधार पर) ऐसा नहीं कर सकते हैं, ऐसा लगता है कि आप वास्तव में कर सकते हैं स्थानीय रूप से अपने फेसबुक एप्लिकेशन का परीक्षण करें!

तो मैं मेरा एक पुराने आवेदन उठाया और इसके नाम, साइट यूआरएल और कैनवास यूआरएल संपादित: साइट यूआरएल: http://localhost:80/fblocal/

मैं नवीनतम Facebook PHP-SDK डाउनलोड किया है और मेरी xampp/htdocs/fblocal/ फ़ोल्डर में फेंक दिया।

लेकिन मुझे आपके जैसा ही त्रुटि मिली!मैंने देखा है कि XAMPPhttp://localhost/fblocal/ एक स्वचालित पुनर्निर्देशन कर रहा है तो मैं बस http://localhost/fblocal/ सेटिंग को बदला गया और त्रुटि लेकिन चला गया था मैं (privacy settings से) आवेदन को दूर करने और अपने आवेदन यहाँ फिर से स्थापित और था परिणाम हैं:
alt text

उसके बाद, publish_stream अनुमति के लिए कहा, और मैं अपनी प्रोफ़ाइल को प्रकाशित करने में सक्षम था (PHP-SDK का उपयोग):

$user = $facebook->getUser(); 
if ($user) { 
    try { 
     $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!')); 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

परिणाम: alt text

+1

उम, तो अब मैं उलझन में हूं। इस उत्तर के बारे में क्या: http://stackoverflow.com/questions/4633846/facebook-app-development – musoNic80

+1

I * GUESS * उसका मतलब यह है कि आप स्थानीय रूप से अपने एप्लिकेशन का परीक्षण कर सकते हैं, लेकिन फेसबुक के साथ किसी भी बातचीत के लिए आपकी वेबसाइट/डोमेन। उदाहरण के लिए यदि आपके पास फ़्लैश खेल है, तो आप इसे एफबी कैनवास पर स्थानीय रूप से परीक्षण कर सकते हैं। उसके बाद कोड के लिए, वह समझा रहा है कि आप अपनी ** लाइव ** वेबसाइट को तब तक पहुंचने से कैसे बचा सकते हैं जब तक विकास समाप्त नहीं हो जाता है और आप लाइव जाने के लिए तैयार हैं। – ifaour

+2

अभी तक इतना अच्छा है! मुझे लॉगिन संवाद और अनुमति के लिए पूछना है! मुझे अभी तक कुछ वास्तविक डेटा हथियाने का परीक्षण करने का मौका नहीं मिला है, लेकिन जब मैं करता हूं तो उत्तर स्वीकार करने के लिए तत्पर हूं! वू हू! – musoNic80

8

यह सिर्फ यूआरएल गलती के कारण है।

जो भी वेबसाइट यूआरएल निर्दिष्ट किया गया है वह सही होना चाहिए।

मैंने वेबसाइट URL को http://localhost:3000/ और डोमेनहोस्ट के रूप में डोमेन का उल्लेख किया है, लेकिन मेरे ब्राउज़र में मैं http://0.0.0.0:3000/ चला रहा था।

जब मैंने localhost:3000 के रूप में सर्वर चलाया तो यह समस्या हल हो गई।

जैसा कि मैंने बताया है, साइट यूआरएल स्थानीयहोस्ट फेसबुक के रूप में उसी पर रीडायरेक्ट करेगा, अगर हम 0.0.0.0:3000 चला रहे हैं, तो यह त्रुटि उत्पन्न होगी कि "दिए गए यूआरएल को एप्लिकेशन कॉन्फ़िगरेशन द्वारा अनुमति नहीं है"।

2

जब मैं फेसबुक प्रमाणीकरण विधि का उपयोग कर रहा हूं तो मुझे भी वही समस्या का सामना करना पड़ रहा था। लेकिन मैं फेसबुक एपीआई (Apps >> My App >> Basic) में निम्नलिखित परिवर्तनों के साथ उस मुद्दे को सुधारता हूं।

  1. मैं यूआरएल जो मैं === में दे दिया है हटाया>ऐप फेसबुक (कैनवास यूआरएल) पर
  2. मैं केवल में साइट url दिया ===> के साथ फेसबुक लॉग इन विकल्प वेबसाइट

फिर मैंने अपने वेबपृष्ठ में ऐपआईडी और ऐप सीक्रेट दिया।

तो लॉगिन बटन पर क्लिक करके, यह एक्सेस अनुमतियों के लिए पूछता है, फिर यह इसे यूआरएल (वेबसाइट लॉगिन के साथ वेबसाइट) पर रीडायरेक्ट करता है।

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev'); 
$facebook->getLoginUrl($params); 

जब मैं सक्रिय पृष्ठ का devloper पेज से redirect_uri बदल गया है, 191 त्रुटि आया:

0

एक ही समस्या थी।

तो मैं $ पैरामीटर नष्ट कर दिया:

$facebook->getLoginUrl(); 

एप्लिकेशन-अनुरोध अब अमेरिकन प्लान एप्लिकेशन यूआरएल खुद पर रीडायरेक्ट के बाद फ़े: my.domain.com

क्या मैं अब सूचकांक में जाँच कर रहा है है अगर मैं एफबी आईफ्रेम के अंदर हूं या नहीं तो मेरे ऐप का .php। यदि नहीं, तो मैं लाइव एफबी पेज पर रीडायरेक्ट करता हूं f.e.:

$app = 'facebook.com/pages/foobar-live'; 
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false; 
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) { 
    echo '<script>window.parent.location = "'.$app.'";</script>'; 
    die(); 
} 
0

मैं भी देखा है कि भले ही आप secion के तहत अपनी वेबसाइट निर्दिष्ट -> साइट यूआरएल के रूप में उदाहरण के लिए - फेसबुक लॉग इन के साथ वेबसाइट http://example.com, लेकिन यदि आपका ऐप डोमेन अनुभाग खाली है, और आप www.example.com के रूप में वेबसाइट खोलते हैं तो आपको यह त्रुटि भी मिल जाएगी। "ऐप डोमेन" अनुभाग में इससे बचने के लिए example.com लिखें, जो www.example.com, some.example.com आदि जैसे सबडोमेन की अनुमति देगा

11

मेरे लिए, यह एक अनुपलब्ध ऐप डोमेन था। ऐप में जाएं, और सुनिश्चित करें कि आपके पास ऐप डोमेन के रूप में स्थापित आपकी साइट की जड़ है। स्क्रीनशॉट देखें।

app domains is in the basic settings of your app

+0

यह उत्तर प्रश्न से संबंधित नहीं है क्योंकि मूल पोस्टर स्थानीय रूप से विकसित हो रहा है और ऐप डोमेन फ़ील्ड या तो स्थानीयहोस्ट या 127.0.0.1 की अनुमति नहीं देता है: http://flic.kr/p/kHqiny – Vince

+4

पूछताछ का प्रश्न पहले ही हल हो चुका है। यह उत्तर एक समान समस्या वाले लोगों के लिए उपयोगी होना है, जो सोचते हैं कि यह प्रश्न उन्हें बड़े बोल्ड शीर्षक के आधार पर उनकी सहायता करेगा। अब यह कर सकता है –

0
फेसबुक अनुप्रयोग पृष्ठ में

, बुनियादी टैब गोटो। "फेसबुक लॉगिन के साथ वेबसाइट" विकल्प खोजें।

आपको साइट यूआरएल मिलेगा: इनपुट में पूरा यूआरएल डाला गया है (उदाहरण के लिए http://Mywebsite.com/MyLogin.aspx)। इस, यूआरएल आप कॉल के साथ उपयोग कर सकते हैं एपीपी आईडी की तरह 123456789

https://graph.facebook.com/oauth/authorize?client_id=123456789&redirect_uri=http://Mywebsite/MyLogin.aspx&scope=publish_actions

0

कुछ मैं जोड़ना चाहते हैं, तो है क्योंकि यह गूगल पर त्रुटि 191 पहले सवाल यह है:

जब पुनः निर्देशित एक हस्ताक्षरित अनुरोध के लिए अपनी साइट के बजाय फेसबुक पर, यदि उपयोगकर्ता के पास सुरक्षित ब्राउज़िंग है और आपका ऐप एसएसएल के बिना फेसबुक पर रीडायरेक्ट करता है तो आपको इस त्रुटि का अनुभव हो सकता है।

0

स्थानीय रूप से काम कर रहे हैं ... मुझे काम करने के लिए फीड एपीआई नहीं मिल सका, लेकिन शेयर एपीआई ने बिना किसी समस्या के बहुत सीधे काम किया।

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