我有一些将图片上传到用户个人资料的应用程序。几个小时前,所有应用程序都运行良好,但现在请求上传时,它会出现此错误
Fatal error: Uncaught OAuthException: (#1) An unknown error occurred thrown in applications/fb-sdk/facebook.php on line 543
我正在使用以下代码发布图片。
$FILE = "images/$image";
$args = array('message' => 'My msg ');
$args['image'] = '@' . realpath($FILE);
$data = $facebook->api('/'.$uid.'/photos', 'post', $args);
是因为某些政策变化还是某些新功能?
我将所有权限(例如upload)设置为true,并且应用程序获取上传文件的权限。
P.s:当第二次使用该应用程序时,它可以正常工作。
答案 0 :(得分:2)
您需要验证用户是否已登录并且具有在墙上发布的权限。我们将使用TRY / CATCH通过呼叫用户来做到这一点。
$userId = $facebook -> getUser();
if ($userId) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$userId = NULL;
error_log($e);
}
}
$app_permissions = array(
'scope' => 'publish_stream'
);
$logoutUrl = $facebook->getLogoutUrl();
$loginUrl = $facebook->getLoginUrl($app_permissions);
如果用户未登录或已授权该应用,则您需要通过标题重定向或链接重定向他。
if ($userId){
//Then you can call the facebook api
$data = $facebook->api('/'.$uid.'/photos', 'post', $args);
//... ...
}
这是我找到的最简单方法。
编辑:堆栈上的这个问题帮助了我:Facebook PHP SDK Upload Photos答案 1 :(得分:1)
不,错误是由系统无法获取图像文件引起的。 Facebook不会允许空图像字段出现在api中。所以它返回致命错误:未捕获OAuthException:(#1)---虽然它与OAuth和OAuthException无关。