2011-08-21 45 views
2

我正在開發一個應用程序,它將標籤添加到特定的粉絲頁面(它並不意味着在粉絲頁面外使用),但我需要獲取用戶的標識查看選項卡(該選項卡包含用戶需要回答幾個問題的比賽,我們希望保存這些問題的答案,以便我們可以確定獲勝者)。Facebook選項卡獲取訪問用戶ID

我知道,標準的Facebook標籤應用程序只獲取有關用戶(語言和用戶年齡的粗略指示)的模糊信息,但我想知道如何去獲取用戶的用戶ID查看選項卡。我想強調,此頁面未安裝在用戶個人資料頁面上,所以我無法獲得這樣的ID。 我在想,可能有一種方法要求獲得關於用戶的信息的權限,但是我從來沒有在一個標籤中看到過這個內容,只在canvas應用上。

我們不能在畫布頁面上進行此比賽,我們確實需要將它放在標籤頁上。另一種方法是隨機挑選我們的一位粉絲作爲獲勝者,但我寧願真正解決這個問題。

有關詢問用戶是否允許從應用程序選項卡訪問其個人數據的任何幫助將不勝感激。

由於提前,

回答

6

爲了獲得有關用戶的任何具體信息,該用戶將不得不批准你的申請。

根據你的要求,我會建議你使用JavaScript SDK: http://developers.facebook.com/docs/reference/javascript/

下面的代碼將嘗試登錄用戶的負載 - 如果成功,響應將包含用戶ID以及將訪問令牌。如果用戶尚未對應用程序進行輔助操作,則會彈出一個授權對話框。在這個例子中,初始化後直接嘗試登錄,但最好通過明確的用戶交互(例如鏈接)觸發FB.login,否則瀏覽器可能會阻止彈出窗口。

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: 'your app id', 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 

     FB.login(function(response) { 
      if (response.authResponse) { 
       // response will contain, among other things, the users id and accesstoken 
       FB.api('/me', function(response) { 
        // response will contain the user data you have permissions for 
       }); 
      } else { 
       // User cancelled login or did not fully authorize. 
      } 
     }, {scope: 'LIST,YOUR,PERMISSIONS'}); 
    }; 
    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
       '//connect.facebook.net/en_US/all.js'; 
       document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

編輯以糾正錯誤的@ifaour指出。

+3

您需要將'oauth'參數設置爲'true'。 – ifaour

+0

非常感謝您的評論。我在使用這段代碼時遇到了麻煩,但是當我設置該標誌時,它的工作原理是 –

+0

@jBit,以獲取該id,是否將成爲「user_about_me」作用域權限的一部分? –

0
//This will help you to get user data 

<?php 
    session_start(); 
    require 'src/facebook.php'; 
    $app_id = "your_app_id"; 
    $app_secret = "your_secret_key"; 
    $facebook = new Facebook(array(
     'appId' => $app_id, 
     'secret' => $app_secret 
    )); 

    $canvas_page = "https://www.facebook.com/page_name/app_appid"; //this is your facebook app url 

    $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page); 

    $signed_request = $_REQUEST["signed_request"]; 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

    if (empty($data["user_id"])) { 
     echo("<script> top.location.href='" . $auth_url . "'</script>"); 
    } else { 
     echo $data["user_id"]; 
     $_SESSION['fbuser'] = $data["user_id"]; 
    } 
+0

您需要facebook php sdk –

相關問題