Facebook和Twitter的移动Web分享

17
有没有专门用于移动设备分享到Facebook和Twitter的特殊网址?还是与网站上的相同? 使用:
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>   
<a href="javascript:return false;" rel="nofollow" onclick="window.open('https://twitter.com/share?text=sometext&url=someurl', 'Twitter', 'toolbar=0,status=0,width=626,height=436')">Twitter</a>

针对 Twitter 和

<script>
    function fbs_click() 
    {
        u='www.something';
        t='title';
        window.open('http://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
        return false;
    }
</script>

<a rel="nofollow" href="http://www.facebook.com/sharer/sharer.php?u=someurl" onclick="return fbs_click()" target="_blank" class="">Facebook</a>

为Facebook。
4个回答

26

只要您的移动用户的设备支持JavaScript渲染,您的分享实现方式应该是一样的,并且应该可以正常工作。否则,您可以使用每个平台的API URL在链接内分享,唯一的问题是回调会将用户重定向到Twitter或Facebook,他们必须手动返回您的网站。以下是链接:

在Facebook上分享:

http://m.facebook.com/sharer.php?u=<urlencoded url>t=<urlencoded title>

例如:

http://m.facebook.com/sharer.php?u=http://www.google.com

在Twitter上更新状态:

http://mobile.twitter.com/home?status=<urlencoded status>

这很酷。我甚至不需要 JavaScript 就能让它工作? - resting
不,这种方式更好,因为它还可以让您访问所有非智能手机。 - Simpleton
“image”和“summary”需要哪些参数? - Mateng
7
对于触摸设备,如果您想使用“Fly UI”,则必须使用 https://mobile.twitter.com/compose/tweet?status=<urlencoded status> - eveliotc
正如Evelio所说,http://mobile.twitter.com/home?status=<urlencoded status>可以在移动设备上使用,但是不行。 - Santiago Rebella
它不起作用,但是@Jan-Terje Sørensen的答案可以。 - Kabkee

11

关于Simpleton的回答,有几点需要注意。

  1. http://m.facebook.com/sharer.php 的URL可能不是你想要的。在u查询参数中提供的网站需要在页面中有一些标签,以便分享页面变得有趣。只需尝试在其中放入另一个URL,而不是Google,就可以看到我的意思。我从未真正能够弄清楚它在网站页面中寻找什么,以显示任何有用的内容在您的分享页面中。我没有看到任何关于您正在分享的网站提供额外信息的方法。

  2. 据我所知,t查询参数已不再被Facebook读取

  3. 我发现Facebook feed对话框是更好的共享替代方案(https://developers.facebook.com/docs/reference/dialogs/feed/)。请参见该页面底部的示例以获取您可以共享的信息。将该示例URL粘贴到浏览器中以查看其外观。您可以玩弄参数以查看每个参数在帖子中控制什么。例如,如果您不提供标题参数,则似乎会使用链接参数的基本URL代替它。要使用feed对话框方法,您需要在Facebook上注册您的应用程序,以获取您需要包含在feed对话框URL中的app_id。您还将您的应用程序与Web站点URL相关联,您也将在feed对话框URL中使用它。如果您希望Facebook为您提供移动友好的页面,请在feed对话框URL的末尾添加&display=touch。最后,您必须提供redirect_uri参数,其中用户将被重定向(包括作为查询参数的帖子ID),因此您必须在该URL上提供某些内容以处理响应。

  4. 关于http://mobile.twitter.com/home?status URL,我学到了一些东西:首先,在状态中包含的任何URL都不会被缩短(令人沮丧);其次,如果您的状态包含任何单引号,则它们将被编码为'(HTML实体代码),但是当您发布推文时不会解码它们。但是,如果您通过桌面使用相同的URL发布,则不会发生这种情况。您可以尝试从iPhone(我正在使用iPhone上的Safari)和桌面(我正在使用Safari)尝试以下URL,以了解我的意思:

http://mobile.twitter.com/home?status=Wayne's%20World

注意,我对状态进行了JavaScript encodeURI编码,但是单引号不是大多数URL / I编码器可以编码的字符。有一些编码器将单引号替换为%27,但是我尝试手动插入它仍然不能在状态文本中解码。
我希望这些信息能够帮助那些寻找简单的Facebook和Twitter共享选项的人。

从Facebook浏览器内部跟随http://m.facebook.com/sharer.php链接将打开应用程序的共享对话框,而不是HTML版本。但这似乎不适用于SDK。 - Jan Sommer

5

Twitter - 这是我解决所有设备/浏览器推文网址问题的方法:

http://twitter.com/intent/tweet?text= + encodeURIComponent(tweet);

encodeURIComponent - 是一个内置的javascript函数,可以在 这里找到它的详细解释。

'http://mobile.twitter.com/home?status=' 不被支持,当twitter请求登录时,会出现编码问题.

Facebook - 对于facebook分享,我使用了Facebook API示例


不错,这个格式是Twitter从其他(我猜测已弃用的)API调用中重定向到的。 - Larry

3
网址没问题,但你需要在服务器上做一些工作,让Facebook真正使它看起来好看。Facebook现在使用“Open Graph”,允许您向网页添加特殊标签,这些标签是Facebook可以理解的。您可以定义页面上的媒体类型,甚至在Facebook应用程序内创建自己的对象定义。开发人员Open Graph对象页面的链接在这里
详细页面上Open Graph的示例可能如下所示:
<meta property="fb:app_id"            content="YOUR FACEBOOK_APP_ID }}" /> 
<meta property="og:url"               content="The URL that this page is on" /> 
<meta property="og:site_name"         content="Your domain" />
<meta property="og:title"             content="Title of your page" />
<meta property="og:type"              content="This is very important - it is how
  Facebook refers to your post.  Image, video, text, etc.  Even custom stuff is
  possible" />
<meta property="og:image"             content="image url for facebook to display on
the user's wall" />
<meta property="og:determiner"        content="auto" />   
<meta property="og:description"       content="A description you want with this
content" />

如此等等。这一切都放在您提供给Facebook的实际url的<head>中。然后,Facebook会将其转换为适当的帖子。此外,您需要在应用程序开发人员页面上设置Open Graph,以便Facebook知道要查找og:标签。虽然有些复杂,但它确实起作用。

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接