在应用程序上连接Facebook

时间:2015-03-03 10:59:48

标签: javascript facebook

每当我在Facebook上注销我的帐户时,应用程序中的关联帐户(同一帐户)也会注销。这是预期的吗?

我希望首先提出类似Hootsuite的功能,首先从Facebook开始。

这是我的代码。

<div id="fb-root"></div>
<script>
var app_id='{!#SETTINGS.facebook_api_key#value}';

function statusChangeCallback(response) {
	console.log('statusChangeCallback');
	console.log(response);
	if (response.status === 'connected') {
		console.log('The user is connected.');
		var fb_access_token = response.authResponse.accessToken;
		console.log(fb_access_token);
		rbf_setFieldValue("facebook_access_token", fb_access_token);
	} else if (response.status === 'not_authorized') {
		console.log('The user is not authorized.');
	} else {
		console.log('The user is not logged in.');
		FB.login(function(response) {
			console.log('Logging in.');
			var fb_access_token = response.authResponse.accessToken;
			console.log(fb_access_token);
			rbf_setFieldValue("facebook_access_token", fb_access_token);
		}, {scope: 'public_profile, manage_pages, publish_actions, user_groups'});
	}
}

function checkLoginState() {
	FB.getLoginStatus(function(response) {
		statusChangeCallback(response);
	});
}

window.fbAsyncInit = function() {
	FB.init({
		appId      : app_id,
		cookie     : true,
		xfbml      : true,
		version    : 'v2.1'
	});

	FB.getLoginStatus(function(response) {
		statusChangeCallback(response);
	});
};

// 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/sdk.js";
	fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

1 个答案:

答案 0 :(得分:0)

知道了。

我的错误是我使用FB.ui发布到Facebook,它需要一个Facebook帐户才能发布。

解决方案是使用FB.api并传递用户/页面访问令牌,以便您无需用户登录即可发布。

function postToSocialTimeline() {
  try {
    var obj = {
      name: name,
      description: description,
      link: link,
      picture: picture,
      caption: caption,
      message: "Test",
      access_token: accessCode
    };

    function resp(response) {
        console.log('Cancelled');
      } //FB.ui(obj, resp);

    FB.api('/me/feed', 'POST', obj, function(response) {
      if (!response || response.error) {
        console.log(!response ? 'error occurred' : response.error);
        console.log('Error');
        alert('Unable to post to Facebook!');
        return;
      } else {
        alert('Requisition has been successfully posted!');
      }
    });
  } catch (e) {}
}