我需要将用户信息(即:用户ID,电子邮件地址)从我的门户网站传递到Facebook应用程序,以便当他们授予访问权限使用该应用程序时,他们的个人资料会显示在他们的Facebook标签上。
到目前为止,我决定在Facebook上创建一个管理登录页面/仪表板,以便他们输入他们的电子邮件和密码。然后,我可以检索他们的userID以添加到Facebook选项卡,它将加载他们的所有信息。
现在,我需要Facebook知道我传递了这个值,并将其加载到用户Facebook Like页面。
我不确定这是否是正确的使用方法,或者我应该从哪里开始。
答案 0 :(得分:0)
如果我正确理解您的问题,您想知道Facebook应用中管理页面的一般模式。
我通常做的是确定查看您网页的人是否是管理员,如果是,则输出一个安全链接到您的编辑页面,然后通过Facebook连接并再次验证用户,然后再显示您需要的任何表格执行管理任务。
确定用户是否是该页面的管理员:解析签名的请求数据时,您应该看到page.admin值。如果您没有获得任何已签名的请求数据,您可以放心地假设该用户不是管理员。您可以使用PHP SDK来解析签名的请求数据或编写自己的东西。我编写了自己的库,因为我发现PHP SDK有点难以使用。 https://bitbucket.org/tlack/xfb
一旦您知道他们是否是管理员,请输出指向您管理页面的链接。在该页面上,使用JS SDK进行典型的FB Connect。这是我在Domain Trip 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 help@domaintrip.com");
}
}
);
} 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>
如果你想变得非常有趣,你可以在主页面中拥有管理编辑用户界面,点击按钮时展开。