Facebook graph api 如何使用FB.ui发布用户故事?
目前,点击事件会调用下面的Facebook graph api 如何使用FB.ui发布用户故事?,facebook-graph-api,facebook-javascript-sdk,Facebook Graph Api,Facebook Javascript Sdk,目前,点击事件会调用下面的FB.api函数,并在用户的时间线上发布用户故事(FB应用程序目前处于沙盒模式,用户故事仍在等待审核): 我认为我需要做的是显示一个模式对话框,例如在调用FB.ui时,给用户一个机会添加用户消息,然后将用户故事与用户消息(如果有)一起发布 我是否需要创建自己的自定义模式对话框,或者是否可以通过某种方式使用FB.ui 注意:上面的API调用在我的测试中运行良好。诚然,在上述代码示例中,诸如mynamespace、myobject和myaction之类的变量已被隐藏 我真正
FB.api
函数,并在用户的时间线上发布用户故事(FB应用程序目前处于沙盒模式,用户故事仍在等待审核):
我认为我需要做的是显示一个模式对话框,例如在调用FB.ui
时,给用户一个机会添加用户消息,然后将用户故事与用户消息(如果有)一起发布
我是否需要创建自己的自定义模式对话框,或者是否可以通过某种方式使用FB.ui
注意:上面的API调用在我的测试中运行良好。诚然,在上述代码示例中,诸如mynamespace
、myobject
和myaction
之类的变量已被隐藏
我真正的问题是用户故事没有得到Facebook的批准,因为我可能需要“让用户退出应用程序的正常流程”,以便在用户故事中添加额外的可选内容。我想我需要一个策略来解决这个问题,而不是一个特定的代码示例答案
以下是我从Facebook得到的最新反馈:
您的行为不符合平台政策第IV.2节:
用户消息字段中的文字必须由用户手动书写
应用程序无法预先填充,即使用户可以编辑或
删除这些词。了解有关用户消息的详细信息:
明确发布共享内容对于用户来说是可选的。A.
当用户共享某个内容时,共享控制需要在线
而且它不能在单独的设置区域中。内容应该有一个
用户生成的组件或用户需要从
自然流的应用程序,以决定发布的故事回来
到Facebook。您当前的操作集成不应标记为
“显式共享”。了解有关显式共享内容的更多信息:
如果您使用为您的应用程序创建的测试用户,或使用您的开发人员帐户,您应该能够在批准之前查看发布的故事 您正在进行的API调用也需要稍微更新。不要在FB.api中使用用户ID,只需使用
/me/mynamespace:myaction
。access\u令牌
也不需要包括在内,因为只要用户登录,它就会自动通过呼叫传递
最后,您的对象是否实际被称为myobject
?名称必须与您为报道输入的设置相匹配,例如“article”或其他有效类型
要帮助调试问题,请首先尝试一个简单的API调用(例如,删除消息
和图像
),然后查看发生了什么。然后逐个添加其他参数,以查看是哪个参数导致了问题
编辑 要获得批准,您需要确保用户以一种或另一种形式输入自定义消息-通常通过页面上的文本输入。如果你共享用户未输入的预定义文本,facebook不会批准
如果你想分享一条事先写好的信息,最好用另一种方式分享,比如在故事中添加标题。我更新了我的问题。我对API调用没有任何问题。我在满足“用户消息”和“显式共享”的要求方面遇到了问题。很酷,我认为这种方法将帮助我获得用户消息字段的批准。我还需要做些什么(如果有的话)来获得明确共享的批准?为了帮助获得批准,请向测试用户帐户提供Facebook登录详细信息,并在说明中尽可能多地包含详细信息。包括尽可能多的截图。
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.");
}
}
);