我知道即使从Facebook获取的offline_access令牌也可能无效(例如,如果用户更改了密码)。在这种情况下,我需要捕获抛出的异常,并为我的网站用户再次授权。
那么在这种情况下抛出的确切错误代码/消息是什么?我知道它是OAuthException
,但无法获取代码。不能仅使用类型,因为还有许多其他OAuthException
- s。
我的计划是:更改base_facebook.php
并在此处添加案例处理代码:
protected function throwAPIException($result) {
$e = new FacebookApiException($result);
switch ($e->getType()) {
// OAuth 2.0 Draft 00 style
case 'OAuthException':
// OAuth 2.0 Draft 10 style
/*
* Need to add an appropriate case here.
*/
case 'invalid_token':
$message = $e->getMessage();
if ((strpos($message, 'Error validating access token') !== false) ||
(strpos($message, 'Invalid OAuth access token') !== false)) {
$this->setAccessToken(null);
$this->user = 0;
$this->clearAllPersistentData();
}
}
throw $e;
}
答案 0 :(得分:0)
不要改变SDK,而是像
一样在它上面写一个包装器try{
$facebook->api("/me/feed", .... );
}
catch($e){
//Error Handling
}
答案 1 :(得分:0)
如果有人需要,我会以某种方式找到答案。这类OAuthException的异常是190
。可以从这样的抛出异常中得到:
$ E->引用代码();