2011-12-06 157 views
0

我有一个页面标签应用程序,我希望它第一次用户访问该标签时请求权限(使用用户的电子邮件)。
我认为这应该很简单,但我已经迷失在寻找,教程,php/js apis,新旧方法/功能/技巧中。 我甚至不确定哪种方法适合我的需求。脸书页面标签oauth

什么我的应用程序正在做的是非常简单的:

if (user_has_liked_page()) 
    include ("fan.php"); 
else 
    include ("guest.php"); 

我想要做的是有该FB是对许可的请求“弹出” - 最好是只为喜欢的网页的用户。

我恳请您不要只回复facebook docs/api的所有网址,我已经尝试了其中的很多网址。

如果可能的话,我想知道哪些技巧适合这种情况。
也欢迎举例。

在此先感谢。

+0

什么我怀疑是你将如何跟踪用户有/没有看到弹出窗口。除非他们确实授予他们的电子邮件访问权限,并且您可以获得他们的user_id,否则您是否计划在他们的机器上存储cookie以供后续访问?否则每次没有授予访问权限的用户都会看到弹出窗口。我认为你想要的东西可以完成。你愿意使用PHP解决方案还是JS? – TommyBs

+0

嗨@TommyBs感谢您的回复。我之前没有做过这样的事情,我认为Facebook会为我保留这些信息。但是,如果这不是重点,那么也许一个饼干可以完成这项工作。 – CrisDeBlonde

+0

我更喜欢js解决方案,但如果一个php更方便,我也可以处理它。 – CrisDeBlonde

回答

2

对于JS解决方案,您可以尝试类似的东西在你的fan.php文件下列

<div id="fb-root"></div> 
<script> 
window.fbAsyncInit = function() { 
FB.init({ 
    appId  : 'YOUR_APP_ID', // App ID 
    channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    oauth  : true, // enable OAuth 2.0 
    xfbml  : true // parse XFBML 
}); 

// Additional initialization code here 
}; 

// Load the SDK Asynchronously 
(function(d){ 
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
js = d.createElement('script'); js.id = id; js.async = true; 
js.src = "//connect.facebook.net/en_US/all.js"; 
d.getElementsByTagName('head')[0].appendChild(js); 
}(document)); 
</script> 

<button id="fb-login">Login & Permissions</button> 

<script> 
document.getElementById('fb-login').onclick = function() { 
var cb = function(response) { 
if (response.status === 'connected') { 
    //user is logged in here and you have email scope already 
} else { 
    alert('Click the "Login and Permissions" button so we can send you emails'); 
} 
}; 
FB.login(cb, { scope: 'email' }); 
}; 
</script> 

channel.html的内容应该仅仅是

<script src="//connect.facebook.net/en_US/all.js"></script> 

我没有时间来测试这一点,我从官方文档中解除了大部分。我知道你说过你不想要链接。但是,你可能会发现此页面有用

https://developers.facebook.com/docs/reference/javascript/

而且也有一个测试控制台,您可以玩弄设在这里的JavaScript API

https://developers.facebook.com/tools/console/

+0

似乎工作。我会多测试一下,并回来反馈;) – CrisDeBlonde

+0

非常感谢!这样做的工作! – CrisDeBlonde

+0

嗨@tommybs,你知道如何自动调用FB.login检测用户没有登录*没有使用明确的按钮点击? (根据FB文档,大多数浏览器都会阻止,而且他们是正确的;)我试图检测未登录的用户,然后自动提示登录。 –