Facebook OAuthException:(#1)

时间:2012-02-03 07:14:19

标签: facebook-graph-api oauth facebook-php-sdk

我有一些将图片上传到用户个人资料的应用程序。几个小时前,所有应用程序都运行良好,但现在请求上传时,它会出现此错误

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:当第二次使用该应用程序时,它可以正常工作。

2 个答案:

答案 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无关。