FaceBookRequest-> execute()使我的ajax调用返回状态为500

时间:2015-03-21 01:46:47

标签: php facebook facebook-php-sdk

我正在尝试创建一个php脚本,它从Facebook应用程序接收ajax调用,以检查用户发送的id是否是他自己的。我在下一段代码中获得了用户ID和访问令牌。函数validateMe()将id,字母z作为分隔符和访问令牌放在一起,然后进行ajax调用

FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        monLogin.uid=response.authResponse.userID;
        monLogin.token=response.authResponse.accessToken;
        validateMe();
    } 
}

接下来接收ajax调用的php脚本。当$ response = request-> execute()行时,它返回状态为500的ajax调用;没有评论。当我通过注释来停止此行之前的代码时,它将返回状态为200的ajax调用。因此,我相信有一些东西会使该行无法正常工作。我尝试将名称$ faceb更改为$ session,如某些示例中所示,但事实并非如此。使用Facebook =新的Facebook(数组)对象而不是方法setDefaultApplication也不会这样做,因为Facebook对象已被弃用。

<?php
session_start();
include 'vendor/autoload.php';
use Facebook\FacebookSession;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;

if (isset($GLOBALS['HTTP_RAW_POST_DATA'])){
    $appid='123456';  //not the true appid
    $psswd='123456abcdef';  //not the true password
    FacebookSession::setDefaultApplication($appid, $psswd);
    $infosJoueur = $GLOBALS['HTTP_RAW_POST_DATA'];
    $arrayData = explode('z', $infosJoueur, 2);

    // arrayData[1] is the accessToken from the javascript
    $session = new FacebookSession($arrayData[1]);
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();

    /*$graph = $response->getGraphObject(GraphUser::className());
    $id = $graph->getId();
    if (($arryData[0] = $id)) {
        echo 'yes';
        $_SESSION['uid']=$id;
    }
    else {echo 'no';}*/
}
?>

在评论中提出,我检查了服务器的日志,发现mbstring方法不存在,因为我必须将它添加到composer.json文件中。在require中,我添加了“ext-mbstring”:“*”。我仍然得到一个错误500与不同的日志:

PHP致命错误:未捕获的异常'Facebook \ FacebookAuthorizationException',消息'访问令牌无法解密'

1 个答案:

答案 0 :(得分:0)

感谢您指出有关问题的更多详细信息可能在服务器日志中:mb_substr默认情况下不存在于php中,我们必须告诉php才能找到它。

在第254行的/app/vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php中调用未定义的函数Facebook \ HttpClients \ mb_substr()

答案可以在Facebook PHP SDK error mb_substr

找到

(然后我在调整代码时添加了一些错误,以寻找解决方案,例如删除爆炸中的2)