簡體   English   中英

我無法獲取用戶facebook的會話,getUser返回0-Codeigniter

[英]I can't get the session of user facebook, getUser return 0 - codeigniter

問候,

我在使用Facebook SDK-PHP和Codeigniter時遇到問題。

嘗試捕獲和獲取該用戶的基本數據時,我沒有得到該用戶的會話。

我得到的錯誤是:“必須使用活動訪問令牌來查詢有關當前用戶的信息。”

當我應用“ getUser()”時,我得到“ 0”。

注意:我下載了php-sdk並將目錄base_facebook.php和facebook.php放在目錄庫中

在我的application / config / config.php文件中,放置了我的facebook應用程序的密鑰和app_secret。

Config.php:

$config['base_url'] = 'http://localhost/myapp_local';
$config['app_id'] = 'xxxxxxxxxxxxxx';
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_name'] = 'http://apps.facebook.com/myapp_local/';

在我的Controller Main.php中,我有以下代碼:

class Main extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $fb_config = array(
            'appId' => $this->config->item('app_id'),
            'secret' => $this->config->item('secret')
        );
        $this->load->library('facebook', $fb_config);

    private function _getInfoUserFB() {
        try {
            $fb_id = $this->facebook->getUser();
            if ($fb_id) {
                $fb_data = $this->facebook->api('/me');
                return $fb_data;
            }
        } catch (Exception $exc) {
            echo $exc;
        }
    }
       [....]
}

現在,在我的變量$ fb_id中,在其中獲取bool值的情況下,我始終為“ 0”。 因此,當我嘗試獲取當前用戶facebook的數據時,總是出現以下消息異常:“必須使用活動訪問令牌來查詢有關當前用戶的信息。”

$fb_data['id'] = NULL
$fb_data['first_name'] = NULL
$fb_data['last_name'] = NULL

我在這里做錯了什么? 我錯過任何步驟或設置嗎?

注意2:我沒有使用Facebook登錄按鈕,我的應用程序通過在Facebook上配置我的應用程序直接連接到Facebook。 (畫布URL,安全畫布URL,畫布頁面,站點URL)

注意3:我的應用程序具有一些需要的權限,因此我在Settings-Permissions上放置了必要的權限,但是沒有顯示“ Auth Referrals”選項來顯示對話框確認權限。

我使用CodeIgniter版本2.1.3和PHP-SDK v 3.2.0

您必須轉到Facebook開發者站點->應用程序->權限。 並為您的應用設置基本信息權限。

然后,在函數getLoginUrl(array("scope" => "user_about_me))) ,必須提供參數。

最后,您必須保存訪問令牌$this->facebook->getAccessToken();

如果您有問題可以詢問我。 我已經使用幾乎所有社交媒體平台設置了Codeigniter :)

Facebook對於localhost確實表現不好。 我也經歷過幾次。 我找到的解決方案可以編輯我的主機文件( C:\\Windows\\system32\\drivers\\etc\\hosts/etc/hosts ),並在其中添加以下內容:

127.0.0.1    myfbapp.local

使用此方法,如果將瀏覽器指向http://myfbapp.local/ ,則實際上它將轉到127.0.0.1,這意味着localhost 當然,您也必須更新CI配置,並將基本URL更改為http://myfbapp.local

據我所知,如果域名中沒有點( . ),則Facebook PHP SDK無法設置Cookie,因此這正是我的解決方案所要做的。

OK !,我解決了。 固定的是與較新版本的交互必須以這種形式進行: http : //www.galalaly.me/index.php/2012/04/using-facebook-php-sdk-3-with-codeigniter-2-1/

然后,您必須在首次加載應用程序時調用第一次獲取當前用戶信息的函數。 換句話說,您在網站的MAIN,INDEX視圖中調用該函數。

如果您在其他時間調用,則您的函數無法獲取當前用戶的access_token。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM