php - Facebook PHP API在登录时抛出异常
问题描述
我尝试使用 Facebook Graph API 登录并获取用户信息。我用来获取用户信息的代码以前有效,但今天我尝试使用 facebook 登录,但 Facebook API 抛出此错误。
未定义的偏移量:1 /home/****/vendor/facebook/php-sdk-v4/src/Facebook/Http/GraphRawResponse.php 在第 108 行
该行在此函数中:
public function
setHttpResponseCodeFromHeader($rawResponseHeader)
{
preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|', $rawResponseHeader, $match);
$this->httpResponseCode = (int)$match[1]; // <---- HERE
}
我的代码:
$fb = new Facebook([
'app_id' => Data::get('fbAppId'),
'app_secret' => Data::get('fbAppSec'),
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getRedirectLoginHelper();
$_SESSION['FBRLH_state'] = $_GET['state'];
try {
$accessToken = $helper->getAccessToken();
$_SESSION['token'] = $accessToken;
DB::table('settings')->where('userId', Auth::user()->id)->update(['fbAppToken' => $accessToken]); // save user access token to database
$this->saveFbPages(); // save facebook pages and token
$this->saveFbGroups(); // save facebook groups to database
} catch (FacebookResponseException $e) {
// When Graph returns an error
return '[a] Graph returned an error: ' . $e->getMessage();
} catch (FacebookSDKException $e) {
// When validation fails or other local issues
return '[a] Facebook SDK returned an error: ' . $e->getMessage();
}
解决方案
请在第 107 行打开 /home/xxxxxx/public_html/vendor/facebook/graph-sdk/src/Facebook/Http/GraphRawResponse.php 当前代码:
preg_match('|HTTP/\d.\d\s+(\d+)\s+.*|',$rawResponseHeader, $match);
您可以将代码编辑为:
preg_match('/HTTP\/\d(?:\.\d)?\s+(\d+)\s+/',$rawResponseHeader, $match);
这对我来说就像魅力一样。我希望,这也能解决你的问题。感谢您提出这个美丽的问题。
推荐阅读
- php - esp8266 传感器数据到树莓派网络服务器
- node.js - ExpressJS 在不执行端点的情况下返回错误响应
- c# - Angular / .net core 3.1 从 JWT 获取角色声明
- python - 在数据流作业中安装 Python 包
- python - 无法在 b64 中编码:需要类似字节的对象而不是“str”
- spring - 嗨,我不能在heroku中使用带有spring框架的hibernate插入数据
- database-design - 如何使用不支持复合键的 ORM 在数据库中强制执行多租户约束
- tensorflow - 具有批量大小和错误维度的 TensorFlow
- java - LwjglApplicationConfiguration 的 libgdx 加载首选项
- firebase - 节点的一个属性的 Firebase 规则