使用没有"共享为链接"的链接发布Feed

Aar*_*ter 3 facebook feed facebook-graph-api

我在发布这个问题之前搜索了一个小时,如果这是一个基本的密集问题,请提前原谅我.我觉得必须有一些简单的东西,我不会把头包裹起来.

我看到很多应用程序,例如"WeForPresident",它们在加入时会发布一个简单的Feed.它不包含特殊格式,只包含图像,指向外部网站的链接和一些文本.

我无法用图形api找到一种方法.当我使用链接参数发布时,我得到"共享链接"格式,这是不受欢迎的.然而,使用消息参数不允许链接.

那么,WeForPresident等应用程序如何实现这种效果呢?

再次感谢.


赏金信息

使用/ TEST_USER_ID/feed与消息,链接,描述,图片,名称

帖子作为链接

链接为

添加了动作参数

链接没有

并且用户讨论的应用程序有问题

没有

请注意帖子中的任何地方都没有提

小智 6

你在谈论这样的事吗?

在此输入图像描述

这可以通过Open Graph Objects和Actions实现.这是一个简短的(并且希望不是非常令人困惑)细分:

对象:在上图中,对象是"需要家的宠物".对象是用于描述您正在共享的页面的文本,并在您共享的页面的标题标记中引用(更多内容很快就会提到).

行动:在上图中,"共享"是指"... 共享需要家庭的宠物......".动作就是你用开放图实际做的事情.我已经看到网站" 在某某某上签署请愿书"或" 在这个和那个应用程序上播放这样一个词".粗体字是动作.

可以在http://developers.facebook.com上定义操作和对象类型.如果/当您有应用程序,并且您选择使用Open Graph时,它会鼓励您创建至少一个操作和一个对象类型.有许多预定义的("读书","烹饪食谱","观看视频"等).操作和对象可帮助您个性化发布到人们墙上的消息.

值得注意的是,如果你定义一个自定义Action,Facebook需要在他们愿意让任何人使用它之前批准它.通常它并不是非常困难......你只需要点击Action旁边的"提交"按钮,它就会告诉你是否/何时获得批准.


所以现在我们已经掌握了基础知识,让我们谈谈如何在你的网页上实现这样的东西.我确信你很清楚,Open Graph使用FB.api()而不是FB.ui().我将在这里使用Javascript示例.

  FB.api(
    '/me/app_namespace:share',
    'post',
    {
       pet_who_needs_a_home: document.location.href,
       image: pet_image // optional
    },
    function(response) {
      // You can do something with the response here.
      // If successful, Facebook returns the post id of the post it just made
      // If it fails, check response.error
    }
  );
Run Code Online (Sandbox Code Playgroud)

您的<head>标记中还需要两个非常重要的标记.他们在这里:

<meta property="fb:app_id" content="YOUR_APP_ID" />
<meta property="og:type" content="APP_NAMESPACE:pet_who_needs_a_home" />
Run Code Online (Sandbox Code Playgroud)

现在让我告诉你一切是什么.FB.api()很明显,所以我会跳过......

'/me/app_namespace:share',
Run Code Online (Sandbox Code Playgroud)

/我发布到你的墙上.app_namespace是在developers.facebook.com上的应用详细信息部分中找到的命名空间.您可能需要定义命名空间(settings-> basic-> second text box).":"打破命名空间和操作.共享是动作(再次在developers.facebook.com上定义).

'post',
Run Code Online (Sandbox Code Playgroud)

告诉Facebook我们想要使用POST请求(而不是GET请求).

{
   pet_who_needs_a_home: document.location.href,
   image: pet_image // optional
},
Run Code Online (Sandbox Code Playgroud)

这显然是一个包含两个重要值的javascript数组."pet_who_needs_a_home"是(实际上我的......你应该用你的任何东西替换它)对象类型(仍然在developers.facebook.com上),你回忆一下,这有助于我们定义所使用的语言,如上图所示.图像是一个可选字段,您可以在其中定义将通过打开图形共享的图像.你可以查看一系列其他可选字段......你知道.

function(response) {
Run Code Online (Sandbox Code Playgroud)

......所有这些都是显而易见的,所以我会把那些毫无意义的细节放在那里.正如我在评论中提到的,如果成功,它会返回帖子的帖子ID,或者返回错误(在response.error中找到),这可能是也可能不是描述性的.

我希望,meta标签能够说明问题.YOUR_APP_ID是......你猜对了......你的应用ID.全数字.app_namespace再次是您的命名空间.pet_who_needs_a_home是(我的)对象,应该替换为您正在使用的任何对象.


对不起,很长的帖子.希望有点清楚这一点.