2012-02-25 56 views
1

我知道這裏有很多Q & A,但我似乎無法理解它們,因爲它們沒有顯示完整的代碼示例,或者是做了與我正在嘗試做的不同的事情。如何在簡單的iframe選項卡中提示用戶訪問用戶ID?

我有一個簡單的Facebook歡迎測試選項卡。不是畫布應用程序。我希望能夠獲取用戶標識,但必須提示用戶訪問該信息,然後才能顯示在已簽名的請求中。

所以我在找的是一個簡單的歡迎標籤的代碼示例。我不需要登錄頁面或類似的東西,因爲這將在粉絲內容頁面中,因此他們必須已經登錄。我只想讓該對話框彈出詢問他們的權限,以便我可以獲得用戶標識。

感謝

編輯: 我想補充一點,我只是想出了我的問題,但它不是一個真正的回答這個問題。我想出瞭如何獲得用戶ID而不要求用戶訪問其個人資料的權限。這很簡單,只需將此代碼添加到頁面中,並以相同方式在選項卡和畫布應用中工作。 getUser()通過它自己返回0,但由於用戶已經登錄以查看此內容,所以當getUser()返回0時,代碼只是從API方法獲取用戶標識。現在我終於明白了這一點,看起來很簡單。

$session = $facebook->getUser(); 

if (!$session) { 

    $url = $facebook->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 0 
    )); 

    echo "<script type='text/javascript'>top.location.href = '$url';</script>"; 

} else { 

    try { 

     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 

     $updated = date("l, F j, Y", strtotime($me['updated_time'])); 

     echo "Hello " . $me['name'] . "<br />"; 
     echo "You last updated your profile on " . $updated; 

    } catch (FacebookApiException $e) { 

     echo "Error:" . print_r($e, true); 

    } 
} 

我仍想知道是否有一種方法,使擴展權限對話框顯示的選項卡應用程序,所以這將是很好看的PHP SDK解決方案。

回答

-1

我不認爲Facebook允許這... Facebook不希望用戶的選項卡能夠檢測到誰在看它,並可能向用戶的朋友顯示信息,而不會顯示給用戶。

我可能是錯的:)

+0

這個人似乎是試圖做我正在嘗試但我有他一樣的問題。 http://stackoverflow.com/questions/7278378/facebook-graph-api-page-tab-extra-permissions當點擊登錄鏈接時,我得到了facebook徽標,但沒有看到這個人是如何解決他們的問題的。我使用的是PHP的SDK,而不是JavaScript,所以關於JavaScript鏈接的部分不適用於此。 – isimmons 2012-02-25 16:00:12

+0

我在Facebook上添加了welcome-test作爲畫布應用程序,它的行爲方式完全相同,但是有更大的iframe,所以也許如果我能弄清楚如何通過畫布提示用戶訪問userid,那麼我可以嘗試應用相同的代碼到選項卡。 – isimmons 2012-02-25 16:07:41

0

你需要提示他們允許你的應用程序,以拉動用戶

這可以通過使用JS SDK的功能FB.login()來完成數據。你可以有facebook的文檔中更多的細節:http://developers.facebook.com/docs/reference/javascript/FB.login/

通知,彈出只能在mouseclickkeyup事件被打開 - 否則彈出窗口攔截器會阻止它。

,你還必須設置一個域名和網站網址在開發者網站上的應用程序,並初始化facebook的JS庫(在加載項 - http://developers.facebook.com/docs/reference/javascript/

<div onclick="login();">click here to login</div> 

<script type="text/javascript"> 
function afterLogin(){ 
    alert("user logged"); 
} 

function login(){ 
    FB.getLoginStatus(function(response){ 
     if(response.status=="connected") 
     { 
      afterLogin(); 
     } else { 
      FB.login(function(response){ 
       if(response.status=="connected") 
       { 
       afterLogin(); 
       } 
      }); 
     } 
    }); 
} 
</script> 
+0

感謝Yaron Uliel,如果可能的話,我想用php sdk來做這件事。我將編輯該問題,因爲事實證明,我實際上不需要用戶允許訪問應用程序來獲取用戶標識。在互聯網上有很多關於這些主題的一些混淆信息,所以我的印象是我必須獲得用戶權限才能獲得他們的用戶ID。但我只是設法弄清楚了。 – isimmons 2012-02-25 16:23:28