इस समस्या पर काम करने के पूरे दिन खर्च करने के बाद, मेरे पास एक बहुत अच्छा समाधान है जिसे मैं साझा करना चाहता हूं। एफबी.ईई() के साथ एसडीके का उपयोग करने के बजाय, मैंने पाया है कि मैं अपने स्वयं के पॉपअप को मैन्युअल रूप से https://www.facebook.com/dialog/feed पर खोलकर पूरी तरह से बच सकता हूं। इसे इस तरह से करते समय, redirect_uri अपेक्षा के अनुसार काम करता है, और आप पॉपअप विंडो को बंद करने वाली HTML फ़ाइल पर रीडायरेक्ट कर सकते हैं। चाहे उपयोगकर्ता शेयर या रद्द पर क्लिक करता है, पॉपअप अपेक्षित के रूप में बंद हो जाएगा।
मुझे विश्वास नहीं है कि इस कोड के साथ कोई समझौता है, और यदि कुछ भी है, तो वास्तविक एसडीके की तुलना में उपयोग करना बहुत आसान है।
मेरे जावास्क्रिप्ट कोड (आप FacebookFeedDialog.js के रूप में सहेज सकते हैं) इस तरह दिखता है:
/* by Steven Yang, Feb 2015, originally for www.mathscore.com. This code is free for anybody to use as long as you include this comment. */
function FacebookFeedDialog(appID, linkTarget, redirectTarget) {
this.mParams = {
app_id: appID,
link: linkTarget,
redirect_uri: redirectTarget,
display: "popup"
}
};
/* Common params include:
name - the title that appears in bold font
description - the text that appears below the title
picture - complete URL path to the image on the left of the dialog
caption - replaces the link text
*/
FacebookFeedDialog.prototype.addParam = function(key, value) {
this.mParams[key] = value;
};
FacebookFeedDialog.prototype.open = function() {
var url = 'https://www.facebook.com/dialog/feed?' + encodeCGIArgs(this.mParams);
popup(url, 'feedDialog', 700, 400);
};
/* Takes a param object like this:
{ arg1: "value1", arg2: "value2" }
and converts into CGI args like this:
arg1=value1&arg2=value2
The values and args will be properly URI encoded
*/
function encodeCGIArgs(paramObject) {
var result = '';
for (var key in paramObject) {
if (result)
result += '&';
result += encodeURIComponent(key) + '=' + encodeURIComponent(paramObject[key]);
}
return result;
}
function popup(mylink,windowname,width,height) {
if (!window.focus) return;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
if (!windowname)
windowname='mywindow';
if (!width)
width=600;
if (!height)
height=350;
window.open(href, windowname, 'resizable=yes,width='+width+',height='+height+',scrollbars=yes');
}
यहाँ ऊपर जावास्क्रिप्ट कोड का उपयोग करता है एक नमूना HTML फ़ाइल है:
<HTML>
<BODY>
<SCRIPT type="text/javascript" src="FacebookFeedDialog.js"></SCRIPT>
<SCRIPT>
var dialog = new FacebookFeedDialog(yourAppIDGoesHere,yourDestinationURLGoesHere,yourCloseWindowURLGoesHere);
dialog.addParam('name','This is my title');
dialog.addParam('description','This is the description');
dialog.addParam('picture',yourImageURLGoesHere);
dialog.addParam('caption','This is the caption');
</SCRIPT>
<A href="javascript:dialog.open()">Open facebook dialog</A>
</BODY>
</HTML>
आपका closeWindow एचटीएमएल फ़ाइल इस तरह दिख सकती है:
<SCRIPT>
window.close();
</SCRIPT>
तो, आप वास्तव में पुनर्निर्देशित होने से बच नहीं सकते हैं, वास्तव में? – geekazoid