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