如果没有人,我有这个代码登录用户。
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开发者页面应用程序的选项中,我有“ 网站网址“具有此值的选项”http://DOMAIN.COM/PATH/“。我必须在”配置“部分创建网站平台。
我在不在localhost的互联网托管中工作。
哪个可能是问题?我真的被困了
答案 0 :(得分:1)
确定。代码是正确的。问题是facebook应用程序的几个选项之一。我不确定我改变了什么选项,我把应用程序的可能选项用于帮助解决这个常见问题。
网站应用
Stream post URL security =&gt;离 原生或桌面应用? =&GT;关
希望它有所帮助,如果您使用此主题进行搜索,这个问题就会非常普遍。
答案 1 :(得分:0)
你的PHP版本是什么?是5.4.x吗? 如果是这样,那么您需要稍微更改PHP SDK代码。
我遇到了同样的问题,我发现这篇文章对我很有帮助。 facebook-php-sdk-fixing-getuser-on-php-5-4-x
答案 2 :(得分:0)
它发生在我身上,当我检查我的Apache日志时,我发现了这个:
我通过PHP SDK(使用Curl)与Facebook通信时发现了SSL问题。您必须将CURL_OPTS“CURLOPT_SSL_VERIFYPEER”设置为“false”。
例如:
facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
答案 3 :(得分:0)
有点晚了,但我刚解决了类似的问题(->getUser() = 0)
。
首先,我使用 Facebook SDK 3.x.x (需要PHP 5.2)而不是最新的Facebook SDK 4.0 (需要PHP 5.4)。到目前为止我刚刚使用/包含了SDK的两个文件(facebook.php
和base_facebook.php
),并且由于某种原因,忽略了名为fb_ca_chain_bundle.crt
的第三个证书文件。
结果是,当我正常登录(通过->getLoginUrl()
和自定义JS 弹出窗口窗口)时,facebook api总是给我 = 0 在->getUser()
电话,即使我能够浏览到Facebook并验证我是通过我自己的弹出窗口真正连接的。
直到我决定查看我的apache日志并找到'Invalid or no certificate authority found, using bundled information'
的令人惊讶的描述性错误。我快速搜索了facebook SDK代码,发现该消息与上面的 .crt 文件有关。
在我将文件包含在与上述2相同的文件夹中之后,我的->getUser()
电话可以返回我的Facebook帐户信息。
答案 4 :(得分:0)
SDK 4.0与PHP集成的简单易懂代码在https://github.com/ssgaur/Facebook-Login-PHP-SDK-v4