gpt4 book ai didi

php - Facebook PHP SDK 抛出无法捕获的 "GraphMethodException"错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:58 24 4
gpt4 key购买 nike

我正在经历与 this question about an uncatchable PHP error thrown by the Facebook PHP SDK 极其相似的事情除了我根本没有使用 PHP namespace 这一事实。 This other question也很接近,但没有解释为什么错误无法捕获。此外,就我而言,我有一个 Facebook 应用程序,它针对当前用户已阻止的对象发出 Facebook Graph API 调用。这当然很尴尬,但是对于这个特定的应用程序来说是合法的。这意味着我需要捕获错误,而不是阻止用户首先进行搜索。

我的开发环境中的 fatal error 输出如下所示:

Fatal error: Uncaught GraphMethodException: Unsupported get request. thrown in /path/to/apps/lib/facebook/src/base_facebook.php on line 1271

So, Facebook's Graph API correctly returns an error as a result of the API call, citing "Unsupported get request." However, the Facebook PHP SDK seems to throw this as an uncatchable error, and I don't know why.

I've tried code like the following catch blocks with no success:

try {
$response = $facebook->api("/$some_id_of_object_current_user_has_blocked");
} catch (FacebookApiException $e) {
// Why does this never get caught?
} catch (Exception $e) {
// Similarly, this also never gets caught!
} catch (GraphMethodException $e) {
// Still can't catch this exception, and I don't grok why. :(
}

为了荒谬的完整性,我还尝试了 namespace ,包括这样的东西:

try {
$response = $facebook->api("/$some_id_of_object_current_user_has_blocked");
} catch (\FacebookApiException $e) {
} catch (\Exception $e) {
} catch (\FacebookApiException\GraphMethodException $e) {
} catch (\GraphMethodException $e) {
} catch (... $e) {
}

进一步的调查让我尝试在 base_facebook.php 中捕获它文件本身,它似乎被抛出的地方,在 the protected Facebook::_graph method 中.果然,它在那里是可以捕捉到的。原始代码在 base_facebook.php 的第 879 行左右是:

if (is_array($result) && isset($result['error'])) {
$this->throwAPIException($result);
// @codeCoverageIgnoreStart
}

将此调用包装到 throwAPIException()try...catch区 block 工程:

if (is_array($result) && isset($result['error'])) {
try {
$this->throwAPIException($result);
// @codeCoverageIgnoreStart
} catch (Exception $e) {
// WORKS!
}
}

所以如果它在那里工作,为什么我不能从我自己的脚本中捕获这个异常?我是否遗漏了有关 PHP 错误处理工作方式的一些基本知识?

或者,Facebook 应用程序是否有办法获取 Facebook 用户已阻止的所有对象的列表,例如用户已阻止的其他 Facebook 用户?我对 Graph API 足够熟悉,知道应用程序可以通过某种方式访问​​ a list of all users a page has blocked ,但这不是我要找的。

感谢您的宝贵时间。

最佳答案

它显然无法捕获,因为它与您的应用使用的权限有关。

在你的情况下,看起来你正在尝试 GET 和我一样的东西,这需要权限:read_stream

他们会让这种事情变得无法捕捉是有道理的 - 但你会认​​为 facebook 开发者可以做一些更友好的事情......

关于php - Facebook PHP SDK 抛出无法捕获的 "GraphMethodException"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com