<script type="text/javascript">
function SendToFacebook()
{
window.fbAsyncInit = function () {
// init the FB JS SDK
FB.init({
appId: '432036336937975', // App ID from the app dashboard
status: false, // Check Facebook Login status
xfbml: true // Look for social plugins on the page
});
FB.login(function (response) {
FB.api('/me/accounts', function (apiresponse) {
if (response.authResponse) {
//simple user access token
var accessToken = response.authResponse.accessToken,
ajaxRequest = new XMLHttpRequest(),
pageId = '1521533601413118';
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState === 4) {
//print out the extended page access token
alert(ajaxRequest.responseText);
}
};
ajaxRequest.open('POST','generatePageToken.php?pageId=' + pageId, true);
ajaxRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded');
ajaxRequest.send('accessToken=' + accessToken);
}
var data = {
message: "mymessage test",
display: 'iframe',
caption: "caption",
name: "name",
description: "description",
to: '1521533601413118',
from: '1521533601413118'
};
FB.api('/1521533601413118/feed', 'post', data, function () {
console.log(arguments);
});
});
}, { scope: 'manage_pages'});
};
// Load the SDK asynchronously
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
} (document, 'script', 'facebook-jssdk'));
}
</script>
我收到此错误 &#34; [object Arguments] {0:Object {...},length:1}&#34;在我的JavaScript控制台中。为什么是这样?此外,我应该注意,我希望这个发布为PAGE而不是管理员。不确定它会做什么。我已经被困在这几天了,所以请有人帮忙吗?
我已经从这里和其他地方读过大约100个线程,所以我确实知道这是一个重复的线程,但是没有线程还没有为我工作。想链接给我一个帖子?可能已经尝试过了。我一定是错过了一个场景或什么的。请把对待我当成一个完整的开端 - facebook API太混乱了。
答案 0 :(得分:0)
确保您熟悉Graph API的不同访问令牌。您需要一个页面访问令牌来发布“作为页面”。除此之外,它是完全相同的API调用。以下是一些有关令牌的有用链接以及如何获取它们:
最后一个链接解释了如何创建永久有效的扩展页面标记。您必须执行此服务器端,但您不需要PHP SDK。最好只在服务器上使用页面令牌。
如果您想将PHP SDK用于Feed发布,请参阅以下教程:
关于您的代码:您应该在页面加载时初始化Facebook,并且只在您的SendToFacebook函数中调用FB.login。另请查看Facebook文档中的“FB.getLoginStatus”,这样您就不必一直使用FB.login。
获取扩展页面令牌后的示例调用(只是一个示例,您可能需要urlencode参数,如消息):
$appsecretProof = hash_hmac('sha256', $accessToken, $fbAppSecret);
//init curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'facebook-php-3.2');
//get extended user access token
$url = 'https://graph.facebook.com/' . $pageId . '/feed?message=whatever' .
'&access_token=' . $pageToken;
'&appsecret_proof=' . $appsecretProof;
curl_setopt($ch, CURLOPT_URL, $url);
$curlResult = curl_exec($ch);
查看文档中的其他参数:https://developers.facebook.com/docs/graph-api/reference/v2.1/page/feed