簡體   English   中英

卡在使用facebook php sdk。 GetUser始終返回0

[英]Stuck using facebook php sdk. GetUser always returns 0

如果沒有任何人,我有此代碼可以用用戶登錄。

index.php,位於http://DOMAIN.COM/PATH中

在此,如果返回的用戶ID為0,則從Facebook實例獲取登錄URL,並重定向到該URL以使用Facebook用戶登錄。 然后,在執行授權操作之后,下一個URL是“ http://DOMAIN.COM/PATH/check.php ”,其中再次執行“ getUser”方法,但是用戶ID再次為0。

`

$fbPermissions = 'read_stream, publish_stream, user_birthday, user_location, user_work_history, user_hometown, user_photos';
$site_url   = "http://DOMAIN.COM/PATH/check.php";
$facebook = new Facebook(array(  
            'appId'  => 'MY_ID',  
            'secret' => 'MY_SECRET_ID',   
            'cookie' => true  
            ));  

$user = $facebook->getUser(); 

if($user) { 

    try{  
            echo "user id insid if=".$user;
            $user = $facebook->api('/me');  
    } catch (Exception $e){}  

} else {  
    $loginUrl = $facebook->getLoginUrl(array('scope'=>$fbPermissions,'redirect_uri'=>$site_url));
    header('location:'.$loginUrl.'');
} 
?>

check.php代碼

<?php
include_once("facebook.php");

$fbPermissions = 'read_stream, publish_stream, user_birthday, user_location, user_work_history, user_hometown, user_photos';
$facebook = new Facebook(array(  
            'appId'  => 'MY_ID',  
            'secret' => 'MY_SECRET_ID',  
            'cookie' => true  
            ));  

$user = $facebook->getUser(); 

if($user) { 

    try{  
            echo "user id insid if=".$user;
            $user = $facebook->api('/me');  
    } catch (Exception $e){}  

} else {  
    echo "No user";
} 
?>

因此,在我的Facebook開發人員頁面應用程序的選項中,我具有“站點URL”選項,其值為“ http://DOMAIN.COM/PATH/ ”。 我必須在“配置”部分中創建一個網站平台。

我正在不在本地主機的Internet托管中工作。

哪個可能是問題? 我真的被困住了

好。 代碼正確。 問題是facebook應用程序的一個或多個選項。 我不確定我更改了什么選項,為了幫助解決這個常見問題,我放置了應用程序的可能選項。

網站應用程序。

流發布URL安全=>關閉本機或桌面應用程序? =>關

希望對您有幫助,如果您使用此主題進行搜索,這個問題真的很常見。

您的PHP版本是什么? 是5.4.x嗎? 如果是這樣,則需要稍微更改PHP SDK代碼。

我也遇到了同樣的問題,我發現本文確實對我有很大幫助。 Facebook的PHP-SDK固定-的getUser-ON-PHP-5-4-X

它發生在我身上,當我檢查我的Apache日志時,我發現了這一點:

在此處輸入圖片說明

當通過PHP SDK(使用Curl)與Facebook通信時,我發現它存在SSL問題。 您必須將CURL_OPTS“ CURLOPT_SSL_VERIFYPEER”設置為“ false”。

例如:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; 

有點晚了,但我剛剛解決了我的類似問題(->getUser() = 0)

首先,我使用的是Facebook SDK 3.xx (需要PHP 5.2),而不是最新的Facebook SDK 4.0 (需要PHP 5.4)。 到現在base_facebook.php ,我僅使用/包含了2個SDK文件( facebook.phpbase_facebook.php ),由於某種原因,我忽略了名為fb_ca_chain_bundle.crt的第三個證書文件。

結果是,盡管我正常登錄(通過->getLoginUrl()和自定義JS 彈出窗口),但即使我能夠上網,facebook api始終在->getUser()調用中被賦予我= 0 。並確認我是通過自己的彈出窗口真正連接的。

直到我決定查看我的Apache日志並'Invalid or no certificate authority found, using bundled information' 描述性錯誤 我迅速搜索了Facebook SDK代碼,發現該消息與上述.crt文件有關。

在將文件包含在與上面2相同的文件夾中之后,我的->getUser()調用能夠返回我的facebook帳戶信息。

SDK 4.0與PHP集成的簡單易懂的代碼位於https://github.com/ssgaur/Facebook-Login-PHP-SDK-v4

暫無
暫無

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

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