如果我正确理解你的问题,你想知道Facebook应用程序管理页面的一般模式。
我通常会做的是确定查看您的网页的人是否是管理员,如果是,请输出安全链接到您的编辑页面,然后通过Facebook连接并在显示任何表单之前再次验证用户需要执行管理任务。
确定用户是否为页面的管理员:解析签名的请求数据时,应该会看到page.admin值。如果您没有获得任何签名的请求数据,则可以安全地假定该用户不是管理员。您可以使用PHP SDK来解析签名的请求数据或编写自己的东西。我写了自己的库,因为我发现PHP SDK有点难以使用。 https://bitbucket.org/tlack/xfb
一旦你知道他们是否是管理员,输出一个链接到你的管理页面。在该页面上,使用JS SDK进行典型的FB Connect工作。以下是我在我的域名旅行的Facebook应用要求使用和储存,我用它来操作后,网页离线访问令牌一个小例子:
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
FB.init({
appId : '<?= $app_id; ?>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true // enable OAuth 2.0
});
function login() {
var callback = function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('/<?= $_REQUEST['id']; ?>?fields=access_token',
function(response) {
if (response.access_token) {
document.location = 'edit_permission.php?id=<?= $_REQUEST['id']; ?>&at='+response.access_token;
} else {
alert("Could not get permission to access page. Please contact [email protected]");
}
}
);
} else {
document.location = '<?= get_my_url(); ?>&f=1';
}
};
FB.login(callback, {scope: 'offline_access,manage_pages'});
}
</script>
<p>
We need permission to interact with your Facebook page.
</p>
<p>
<button onclick="login(); return false;">Login Now</a>
</p>
如果你想获得真正看中的,你可以有管理员编辑主页面中的UI,单击按钮时展开。
太棒了!谢谢(你的)信息!因此,在我确认FBUser是管理员之后,我从我的API(即:userID)传入正确的值,Facebook将其存储并加载到页面选项卡?例如:如果我有一个乐队网站,并且他们将我的应用添加到他们的FB页面中,我需要加载/保存来自我网站的乐队档案ID,照片ID,说明等。该应用对每个用户都是动态的。 – Naomi
当您的应用程序加载到页面中时,您会在请求数据中收到页面ID。您可以查询Graph API以获取有关此时页面的更多信息。之后,由您自己在数据库中保存本地需要的东西。当他们遇到未知的页面ID时,大多数应用程序(例如我自己的应用程序FanBldr)都会显示“页面尚未设置”消息。如果用户是管理员,则会显示编辑其页面设置的提示。 –