[英]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.php
和base_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.