Facebook對我來說有點黑盒子,但我相信我已經遵循了SO和其他地方的建議,但是我仍然無法實現這個目標。Facebook的JS SDK共享到託管頁面
基於建議的回答編輯的代碼:
<div id="fb-root"></div>
<script>
(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/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
var login;
window.fbAsyncInit = function() {
FB.init({
appId : 'Valid_App_ID',
status : true,
xfbml : true,
version : 'v2.2'
});
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
login = response;
console.log('Hello ' + response.name);
});
} else {
//login cancelled or not every permission accepted
}
}, {scope: 'manage_pages, publish_actions'});
function fb_share() {
FB.ui({
method: 'feed',
name: login.name,
link: 'valid_URL',
picture: 'valid_image_URL',
caption: 'some_text',
to: valid_page_ID
}, function(response) {
console.log(response);
});
}
$(document).ready(function(){
$('.share-btn').on('click', fb_share);
});
};
</script>
在實踐中,鏈接,圖像,標題字段是從用戶輸入填充,並且to
字段是基於所述name
(以便完成自動它始終是由登錄用戶管理的頁面)。
我已將自己用作測試(作爲應用設置的'角色'添加),並已授予對登錄範圍內的其他項目的權限。我可以通過在FB_share函數中註釋to:
行來成功發佈我的個人時間表,但如果我留下該行,即使page_ID用於我管理的頁面,也會在控制檯中(以及在控制檯中分享對話框):
Object {error_code: 100, error_msg: "Cannot post to a user who has not installed the application."}
我敢肯定,我失去了一些東西簡單,但是從我讀過的,上面的代碼應該工作。
任何人都可以指向正確的方向嗎?感謝您的任何建議。
變量'login'是來自登錄的響應數據。我已經嘗試過使用'login.id'和'login.name',但沒有區別。 'login.first_name'只是因爲那是我更願意在共享帖子上顯示的內容。我會更正上面的代碼。 – sideroxylon 2015-03-25 01:15:58
你使用'localhost'嗎? – PHPglue 2015-03-25 01:19:37
否 - 我在網站上加載了該頁面。 – sideroxylon 2015-03-25 01:20:50