从 AS3 网站分享 url 到 Facebook

Posted

技术标签:

【中文标题】从 AS3 网站分享 url 到 Facebook【英文标题】:Sharing url to Facebook from AS3 website 【发布时间】:2012-05-30 09:58:43 【问题描述】:

我正在尝试共享来自 flash as3 网站的 URL,但我无法使其正常工作... 我尝试了这里给出的两种方法:How to create a share button in AS3

第一个有效:

import flash.net.navigateToURL;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;

share_btn.addEventListener(MouseEvent.CLICK, shareClickHandler);

function shareClickHandler(evt:MouseEvent):void

    var varsShare:URLVariables = new URLVariables();
    varsShare.u = 'http://domain.com/pageN.html';
    varsShare.t = 'Title Page';

    var urlFacebookShare:URLRequest = new URLRequest('http://www.facebook.com/sharer.php');
    urlFacebookShare.data = varsShare;
    urlFacebookShare.method = URLRequestMethod.GET;

    navigateToURL(urlFacebookShare, '_blank');

但是,帖子说:

In order to use a picture add the following Metatags:
<meta name="title" content="my title" />
<meta name="description" content="my description" />
<link rel="image_src" href="images/thumbnail_image.jpg" />

但是如何????

第二种方案展示了如何添加参数:

var req:URLRequest = new URLRequest();
req.url = "http://www.facebook.com/dialog/feed";
var vars:URLVariables = new URLVariables();
vars.app_id = "000000000000"; // your application's id
vars.link = "http://YourSite.com";
vars.picture = "https://www.google.com/intl/en_com/images/srpr/logo3w.png";
vars.name = "name name";
vars.caption = "caption caption caption";
vars.description = "description description description";
vars.message = "message message message message message";
vars.redirect_uri = "http://YourSite.com";
req.data = vars;
req.method = URLRequestMethod.GET;
navigateToURL(req, "_blank");

但它没有使用 Facebook 共享器..... 我尝试了许多不同的方法来结合这两种解决方案,但除了奇怪的 url 不起作用之外我什么也没得到......

请,有人可以帮我解决这个问题,或者告诉我如何使用第二个解决方案,但要与共享者一起使用?

非常感谢您的帮助

【问题讨论】:

【参考方案1】:

您需要将 OpenGraph 元标记添加到您尝试共享的页面(在上面的示例中为http://domain.com/pageN.html`)。您在问题中提供的元标记应添加到此处,以便 Facebook 共享脚本可以获取它。

在您的 HTML 代码中的 &lt;head&gt;&lt;/head&gt; 标记之间添加以下代码:

<meta name="title" content="my title" />
<meta name="description" content="my description" />
<link rel="image_src" href="images/thumbnail_image.jpg" />

【讨论】:

哦,好的,谢谢!问题是这些标签是在我的 as3 应用程序中使用 deeplink 动态生成的......相应的 html 页面实际上并不存在...... 这就是为什么它不起作用的原因。这些页面需要存在,即使它是虚拟的。【参考方案2】:

我通常做的 - 我创建一个 Facebook 应用程序 - 使用 Facebook 登录的网站,添加应用程序域,然后在你的 html 中添加这个 javascript 函数:

function postToFacebook(link)              
                var caption = encodeURIComponent("this is cool");
                var name = encodeURIComponent("My cool Site");
                var pathToPicture = "http://yoursite.com/coolpicture.jpg";
                var redirect = "http://yoursite.com/redirect.html";
                var id = "123456789098876"; // your application id
                var theLink = link; // the link you want to share - this is passed as a variable from flash, similary you can pass any variables from  flash    

                var fbencoded = "http://www.facebook.com/dialog/feed?app_id=" + id + "&link=" + theLink + "&picture=" + pathToPicture + "&name=" + name +   "&caption=" + caption+ "&redirect_uri=" + redirect;
                window.open(fbencoded, "_blank");        

在 Flash 中,只要你想分享,只需调用这个 javascript 函数,新窗口就会与 facebook 分享窗口一起打开:

ExternalInterface.call("postToFacebook", "http://mysite.com/#/cool-page")

这样您就可以将任何变量传递给该函数。例如,当有人分享时,您可以拥有不同的图片,而仅使用元标记是不可能的.....

唯一的事情是您必须创建redirect.html - 它必须在您的域内,并且链接到您的应用程序。在重定向中,你可以有一些简单的东西:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title></title>
    <meta http-equiv="REFRESH" content="0;url=http://www.facebook.com">
</head>
<body>

</body>
</html>

它只会将用户重定向到 facebook。 希望这会有所帮助。

【讨论】:

【参考方案3】:

这是我从 AS3 中的按钮使用共享对话框的方式。希望对你有帮助

import flash.net.navigateToURL;

share_btn.addEventListener(MouseEvent.CLICK, shareClickHandler);

function shareClickHandler(evt:MouseEvent):void

    var fb_title = "titulo";
    var fb_desc = "descripcion";
    var fb_url = "http://mibff.com.mx/";
    var fab_img = "http://mibff.com.mx/MiBFF_new.jpg";
    var facebookSharer:String = "http://www.facebook.com/sharer.php?s=100&p[title]=" + fb_title + "&p[summary]=" + fb_desc + "&p[url]=" + fb_url + "&p[images][0]=" + fab_img;
    var jscommand:String = "window.open('" + facebookSharer + "','win','width=626,height=316,toolbar=no,scrollbars=no,resizable=no');";
    var sharer:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);");
    navigateToURL(sharer,"_self");

    //trace(facebookSharer);

【讨论】:

以上是关于从 AS3 网站分享 url 到 Facebook的主要内容,如果未能解决你的问题,请参考以下文章

将帖子从我的网站分享到 Facebook 时隐藏帖子图片之外的文字

在 Facebook 上分享图片,而不是通过 URL

图片未显示在 Facebook 分享中

使用GraphAPI的简单Facebook_网站.Swc在As3中

分享 Facebook URL(新方式)

Facebook 分享不预览(完整)页面