FaceBookRequest->execute() 使我的 ajax 调用 return 状态为 500
FaceBookRequest->execute() makes my ajax call return with status 500
我正在尝试制作一个 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(); 时,它 returns 到状态为 500 的 ajax 调用;没有评论。当我通过注释停止此行之前的代码时,它 returns 到状态为 200 的 ajax 调用。因此,我相信有一些东西导致此行无法按预期工作。我尝试像在某些示例中那样将名称 $faceb 更改为 $session,但事实并非如此。使用 Facebook = new Facebook(array) 对象而不是方法 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文件中。在要求中,我添加了 "ext-mbstring": "*"。我仍然收到带有不同日志的错误 500:
PHP 致命错误:未捕获异常 'Facebook\FacebookAuthorizationException' 消息 'The access token could not be decrypted'
感谢您指出有关该问题的更多详细信息可能在服务器日志中:默认情况下 php 不存在 mb_substr,我们必须告诉 php找到它。
在第 254 行 /app/vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient. php 中调用未定义的函数 Facebook\HttpClients\mb_substr()
那里可以找到答案Facebook PHP SDK error mb_substr
(然后我在调整代码以寻找解决方案时添加了一些错误,例如删除爆炸中的 2)
我正在尝试制作一个 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(); 时,它 returns 到状态为 500 的 ajax 调用;没有评论。当我通过注释停止此行之前的代码时,它 returns 到状态为 200 的 ajax 调用。因此,我相信有一些东西导致此行无法按预期工作。我尝试像在某些示例中那样将名称 $faceb 更改为 $session,但事实并非如此。使用 Facebook = new Facebook(array) 对象而不是方法 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文件中。在要求中,我添加了 "ext-mbstring": "*"。我仍然收到带有不同日志的错误 500:
PHP 致命错误:未捕获异常 'Facebook\FacebookAuthorizationException' 消息 'The access token could not be decrypted'
感谢您指出有关该问题的更多详细信息可能在服务器日志中:默认情况下 php 不存在 mb_substr,我们必须告诉 php找到它。
在第 254 行 /app/vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient. php 中调用未定义的函数 Facebook\HttpClients\mb_substr()
那里可以找到答案Facebook PHP SDK error mb_substr
(然后我在调整代码以寻找解决方案时添加了一些错误,例如删除爆炸中的 2)