Facebook graph api Facebook Graph API SDK v5-将图片发布到页面';s专辑

Facebook graph api Facebook Graph API SDK v5-将图片发布到页面';s专辑,facebook-graph-api,facebook-php-sdk,facebook-apps,Facebook Graph Api,Facebook Php Sdk,Facebook Apps,我正在尝试使用Facebook PHP SDK v5将图片发布到属于Facebook页面的相册中 我已经检查了(许多)类似的问题,但是它们都与SDK的早期版本有关,当时仍然允许publish\u actions 我的设置: 我的应用程序配置正确,我能够检索我的访问令牌 我能够毫无问题地运行一些测试API查询 我是此页面的管理员,我的访问令牌具有以下权限[“管理页面”、“发布页面”、“用户照片”] SDK以'fileUpload'=>true作为参数正确初始化 将图片发布到相册的代码 它是基于 在

我正在尝试使用Facebook PHP SDK v5将图片发布到属于Facebook页面的相册中

我已经检查了(许多)类似的问题,但是它们都与SDK的早期版本有关,当时仍然允许
publish\u actions

我的设置:

  • 我的应用程序配置正确,我能够检索我的访问令牌
  • 我能够毫无问题地运行一些测试API查询
  • 我是此页面的管理员,我的访问令牌具有以下权限
    [“管理页面”、“发布页面”、“用户照片”]
  • SDK以
    'fileUpload'=>true
    作为参数正确初始化
  • 将图片发布到相册的代码

    它是基于


    在研究了几个小时的替代解决方案后,我找到了一个解决办法

    显然,我使用的是用户访问令牌而不是页面访问令牌

    解决方案

    1-首先,如果您的令牌是用户/页面访问令牌

    2-如果是用户令牌,则需要请求页面访问令牌:

    $user_access_token = 123456;
    $page_id = 123456; // Can be retrieved via right click on your page logo + Copy link address
    $response = $fb->get('/'.$page_id.'?fields=access_token',  $user_access_token);
    $page_access_token = json_decode($response->getBody())->access_token;
    echo $page_access_token;
    
    3-最后,使用页面访问令牌在页面上发布图片

    完整代码

    <?php
    
    require_once __DIR__.'/vendor/autoload.php';
    
    $fb = new Facebook\Facebook(['app_id' => '123456', 'app_secret' => '123456', 'default_graph_version' => 'v3.3', 'fileUpload' => true]);
    $picture = 'https://www.example.com/pic.jpg';
    $album_id = '123456';
    $user_access_token = 'mytoken';
    $page_id = 123456;
    
    try {
        $response = $fb->get('/'.$page_id.'?fields=access_token', $user_access_token);
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        die('Graph returned an error: ' . $e->getMessage());
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        die('Facebook SDK returned an error: ' . $e->getMessage());
    }
    
    $page_access_token = json_decode($response->getBody())->access_token;
    
    try {
        $response = $fb->post('/'.$album_id.'/photos', array ('url' => $picture), $page_access_token);
    } 
    catch(Facebook\Exceptions\FacebookResponseException $e) {
        die('Graph returned an error: ' . $e->getMessage());
    }
    catch(Facebook\Exceptions\FacebookSDKException $e) {
        die('Facebook SDK returned an error: ' . $e->getMessage());
    }
    
    $graphNode = $response->getGraphNode();
    

    在研究了几个小时的替代解决方案后,我找到了一个解决办法

    显然,我使用的是用户访问令牌而不是页面访问令牌

    解决方案

    1-首先,如果您的令牌是用户/页面访问令牌

    2-如果是用户令牌,则需要请求页面访问令牌:

    $user_access_token = 123456;
    $page_id = 123456; // Can be retrieved via right click on your page logo + Copy link address
    $response = $fb->get('/'.$page_id.'?fields=access_token',  $user_access_token);
    $page_access_token = json_decode($response->getBody())->access_token;
    echo $page_access_token;
    
    3-最后,使用页面访问令牌在页面上发布图片

    完整代码

    <?php
    
    require_once __DIR__.'/vendor/autoload.php';
    
    $fb = new Facebook\Facebook(['app_id' => '123456', 'app_secret' => '123456', 'default_graph_version' => 'v3.3', 'fileUpload' => true]);
    $picture = 'https://www.example.com/pic.jpg';
    $album_id = '123456';
    $user_access_token = 'mytoken';
    $page_id = 123456;
    
    try {
        $response = $fb->get('/'.$page_id.'?fields=access_token', $user_access_token);
    } catch(Facebook\Exceptions\FacebookResponseException $e) {
        die('Graph returned an error: ' . $e->getMessage());
    } catch(Facebook\Exceptions\FacebookSDKException $e) {
        die('Facebook SDK returned an error: ' . $e->getMessage());
    }
    
    $page_access_token = json_decode($response->getBody())->access_token;
    
    try {
        $response = $fb->post('/'.$album_id.'/photos', array ('url' => $picture), $page_access_token);
    } 
    catch(Facebook\Exceptions\FacebookResponseException $e) {
        die('Graph returned an error: ' . $e->getMessage());
    }
    catch(Facebook\Exceptions\FacebookSDKException $e) {
        die('Facebook SDK returned an error: ' . $e->getMessage());
    }
    
    $graphNode = $response->getGraphNode();
    

    你能在相册中发布吗?你能在相册中发布吗?