2011-09-10 67 views
0

我需要将用户信息(即:用户ID,电子邮件地址)从我的门户传递到Facebook应用程序,以便他们的个人资料显示在他们的Facebook选项卡上,当他们授予访问权限以使用应用程序时。为管理员创建Facebook应用程序选项卡

到目前为止,我决定在Facebook上创建一个管理着陆页/仪表板,以便他们可以输入他们的电子邮件和密码。然后,我可以检索他们的用户ID以添加到Facebook选项卡,并且它会加载他们的所有信息。

现在,我需要Facebook知道我正在传递该值,并将其加载到用户Facebook Like页面。

我不确定这是否是正确的使用方法,或者我应该从哪里开始。

回答

0

如果我正确理解你的问题,你想知道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,单击按钮时展开。

+0

太棒了!谢谢(你的)信息!因此,在我确认FBUser是管理员之后,我从我的API(即:userID)传入正确的值,Facebook将其存储并加载到页面选项卡?例如:如果我有一个乐队网站,并且他们将我的应用添加到他们的FB页面中,我需要加载/保存来自我网站的乐队档案ID,照片ID,说明等。该应用对每个用户都是动态的。 – Naomi

+0

当您的应用程序加载到页面中时,您会在请求数据中收到页面ID。您可以查询Graph API以获取有关此时页面的更多信息。之后,由您自己在数据库中保存本地需要的东西。当他们遇到未知的页面ID时,大多数应用程序(例如我自己的应用程序FanBldr)都会显示“页面尚未设置”消息。如果用户是管理员,则会显示编辑其页面设置的提示。 –

相关问题