繁体   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