模板数据必须是JSON编码字典的错误

问题描述:

我试图张贴一张照片有一些文字,以我的Facebook页面,但现在我收到此错误信息:模板数据必须是JSON编码字典的错误

Template data must be a JSON-encoded dictionary, of the form {'key-1': 'value-1', 'key-2': 'value-2', ...} 

这是我的代码:

<?php 
session_start(); 

require_once __DIR__ . '/Facebook/autoload.php'; 

$filename = __DIR__ . '/static/images/test.png'; 

$acces_token = "my-valid-never-expiring-page-acces-token"; 

$pageid = "987654321987654321"; 

echo "<p>START</ps>"; 

$fb = new Facebook\Facebook([ 
    'app_id'  => '123456789', 
    'app_secret' => 'appsecret123456789abc', 
    'default_graph_version' => 'v2.8', 
    ]); 
    try { 
     $response = $fb->post(
      '/'.$pageid.'/feed', 
      array(
       "message" => "test test", 
       "source" => new CURLFile($filename, 'image/png') 
      ), 
      $acces_token 
     ); 
    }catch(Facebook\Exceptions\FacebookSDKException $e) { 
     echo $e->getMessage(); 
     exit; 
    } 
    catch(Facebook\Exceptions\FacebookAuthenticationException $e) { 
     echo $e->getMessage(); 
     exit; 
    } 

?> 

可悲的是我没有看到任何错误,在error.log中的服务器上,所以它必须是Facebook的API :(

什么我做错了什么范围内?谢谢!

编辑:

改变 '/'.$pageid.'/feed' 到 '/'.$pageid.'/photos' 的问题消失了,不过,我还有一个后:

(#324) Requires upload file 

我自己找到了解决方案:

$response = $fb->post(
    '/'.$pageid.'/photos', 
    array(
     "message" => "test test", 
     "source" => $fb->fileToUpload($filename) 
    ), 
    $tokens[$i] 
);