2011-12-06 88 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文檔,大多數瀏覽器都會阻止,而且他們是正確的;)我試圖檢測未登錄的用戶,然後自動提示登錄。 –