如何使用FB.ui发布用户故事?

时间:2013-10-30 19:51:52

标签: facebook-graph-api facebook-javascript-sdk

目前,在点击事件上调用以下FB.api功能,并在用户的时间轴上发布用户素材(FB应用目前处于沙盒模式,用户故事仍待审核):

FB.api( // creating the user story
   '/userid/mynamespace:myaction',
   'post',
   {
     myobject: fbObjectId, // retrieved in an earlier FB.api call
     access_token: accessToken, // retrieved in an earlier FB.getLoginStatus call
     message: customTextFromUser, // prefilled by my app (FB doesn't approve of this)
     image: ImageURL, // prefilled by my app (FB is OK with this I think)
     'fb:explicitly_shared': true // requires that I take the user out of the normal flow of the app which is why I want to show a modal first
   },
   function(response) {
     // handle the response
     console.log(response);
     if (response.id) {
       alert("Success!  The user story has been shared on Facebook!");
     } else {
       alert("Woops!  Something went wrong sharing the user story on Facebook.  Please try again.");
     }
   }
 );

我认为我需要做的是显示一个模态对话框,例如在调用FB.ui时为用户提供添加用户消息和然后的机会发布用户故事以及用户消息(如果有)。

我是否需要创建自己的自定义模式对话框,还是可以通过某种方式使用FB.ui来实现此目的?

注意:上面的API调用在我的测试中运行正常。当然,上面的代码示例中隐含了mynamespacemyobjectmyaction等变量。

我真正的问题是用户故事还没有得到Facebook的批准,因为我认为需要"让用户退出应用程序的正常流程"使用附加的Explicitly ShareUser Message用户素材。我想我需要一个策略来解决这个问题而不是特定的代码示例答案。

以下是我从Facebook获得的最新反馈:

  

您的行动不符合平台政策的第IV.2节:   https://developers.facebook.com/policy/

     

用户消息字段中的单词必须由用户手动编写   并且无法通过应用程序预先填写,即使用户可以编辑或   删除单词。详细了解用户消息:   https://developers.facebook.com/docs/submission-process/opengraph/guidelines/action-properties/#usermessages

     

发布显式共享内容对用户来说需要是可选的。一个   当用户共享某些内容时,共享控制需要在线   它不能在一个单独的设置区域。内容应该有一个   用户生成的组件或用户需要从中取出   应用程序的自然流程,以决定发布故事   到Facebook。您当前的操作集成不应标记为   “明确分享。”了解有关明确共享内容的更多信息:   https://developers.facebook.com/docs/submission-process/opengraph/guidelines/action-properties/#explicitlyshared

1 个答案:

答案 0 :(得分:0)

如果您使用为您的应用程序创建的测试用户,或使用您的开发者帐户,您应该能够在批准之前看到该故事。

您正在进行的API调用也需要稍微更新。不要在FB.api中使用用户ID,只需使用/me/mynamespace:myaction即可。 access_token也不需要包括在内,因为只要用户登录,它就会自动传递。

最后,您的对象实际上是myobject吗?该名称必须与您为故事输入的设置相匹配,例如'article`或其他有效类型。

要帮助调试此问题,请先尝试一个简单的API调用(例如删除messageimage),看看会发生什么。然后逐个添加其他参数,看看哪一个引起了问题。


修改

要获得批准的操作,您需要确保用户以一种或另一种形式输入自定义消息 - 通常是通过页面上的文本输入。如果您正在共享用户尚未输入的预定义文本,则Facebook不会批准该文本。

如果您想分享预先写好的信息,最好以其他方式分享,例如故事本身的标题。