我目前正在申请在Facebook墙上自动发布。 我浏览了所有讨论此类应用程序的博客和文章。 最后我得出了这个结果。首先,我必须对用户进行身份验证并授予所需的权限,如下面的JavaScript代码所示:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Title</title>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
$(document).ready(function(){
var appId = "xxxxxxxxxxxxx";
var redirectUrl = "http://www.mydomain.com";
if (0 <= window.location.href.indexOf ("error_reason"))
{
$(document.body).append ("<p>Authorization denied!</p>");
return;
}
window.fbAsyncInit = function(){
FB.init({
appId : appId,
status : true,
cookie : true,
oauth : true,
channel: true,
channelURL: "http://www.mydomain.com/channel/"
});
FB.getLoginStatus (onCheckLoginStatus);
};
(function(d)
{
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
function onCheckLoginStatus (response)
{
if (response.status != "connected")
{
top.location.href = "https://www.facebook.com/dialog/oauth?client_id=" + appId + "&redirect_uri=" + encodeURIComponent (redirectUrl) + "&scope=publish_stream,email,user_birthday,publish_actions,offline_access";
}
else
{
// Start the application (this is just demo code)! ///////////////////////////////////
$(document.body).append ("<p>Authorized!</p>");
FB.api('/me', function (response) {
$(document.body).append ("<pre>" + JSON.stringify (response, null, "\t") + "</pre>");
});
//////////////////////////////////////////////////////////////////////////////////////
}
}
});
</script>
</body>
</html>
用户会话成功通过身份验证后,他接受了我的权限请求,代表他发帖,这是我最难解决的一段代码,我从一个站点转移到另一个站点已经工作了两周多。但它没用。
我找到了以下代码来发布帖子,但只发布在当前登录用户的墙上:
<script type="text/javascript">
function updateStatusViaJavascriptAPICalling(){
var status = document.getElementById('status').value;
FB.api('/me/feed', 'post', { message: status }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Status updated Successfully');
}
});
}
它就像一个魅力,但当我将/me/feed
更改为另一个Facebook uid时,它表示将此应用程序发布给其他用户是行不通的。但是,我尝试将应用访问令牌和用户访问令牌设置为post
并更改为PHP feed dialog
,但也是徒劳。
我尝试使用PHP或JavaScript的所有代码来完成这项工作,但遗憾的是没有任何工作。特别是在Facebook阻止应用程序开发人员在朋友的墙上发帖之后。
我所需要的就是代表我的用户在他们的墙上自动发布,即使他们处于离线状态。我怎么能这样做?
答案 0 :(得分:0)
您无法通过图表Api发布给用户的朋友。实现此目的的唯一方法是调用Javascript SDK Feed对话框。
关于访问令牌,您可以扩展短期访问令牌以获取长期存取令牌[持续60天的持续时间]。阅读更多:http://developers.facebook.com/roadmap/offline-access-removal/