dsgnze6572 2012-02-22 13:06
浏览 22
已采纳

Facebook:通过php将图像和描述发布到墙上和页面相册中

I want users to post an image on a facebook page via a form on a website. When they have logged in via facebook on this website, they can select an image from their computer.

Once they have selected the image, I want it to be posted to the users wall, and in an album of the page where I'm one of the administrators.

I have created an app for this, but we can't seem to find a way to get the app to post on this facebook-page.

Do we need to set any permissions on this page or app?

  • 写回答

1条回答 默认 最新

  • dongtan8532 2012-02-22 13:39
    关注

    To upload images to a facebook page of which you're an admin you need to do the following:

    1.) Create a facebook application (the usual way), make sure you specify the Canvas URL

    2.) Navigate to the url below logged in as the admin of the page, and give the permissions (user_photos,manage_pages,offline_access,publish_stream)

    https://www.facebook.com/dialog/oauth?
        client_id=<application_id>
        &redirect_uri=<canvas_url>
        &response_type=token
        &scope=user_photos,manage_pages,offline_access,publish_stream
    

    3.) When you give the application the required permissions you'll be redirected to canvas_url#access_token=*access_token*, for example

    http://example.com/#access_token=awe12
    

    4.) Then navigate to

    https://graph.facebook.com/me/accounts?access_token=<access_token>
    

    (use the access token from #3). This will list the pages you administer; write down the access_token for the page(s) to which you want to upload the image

    I'm not 100% sure but I believe that using graph api you can upload images only to albums created via graph api; i.e. you need to first create an album via graph api. Here's sample code using curl:

    $uri = sprintf( 
        'https://graph.facebook.com/%1$s/albums?access_token=%2$s',
        $page_id, 
        $access_token
    );
    
    $post_fields = array(
        'name' => trim( $album_name )
    );
    
    $curl = curl_init( $uri );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );  
    curl_setopt( $curl, CURLOPT_POST, TRUE );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields );  
    
    $raw_data = curl_exec( $curl );
    curl_close( $curl );
    
    $data = json_decode( $raw_data, $assoc = TRUE );
    

    The $data above will contain the album id, which you'll need to upload a photo:

    // prepare the curl post fields
    $batch = sprintf(
        '[{"method":"POST", "relative_url":"%1$s/photos", "attached_files":"file1"}]',
        $album_id
    );  
    
    $post_fields = array(
        'batch' => $batch,
        'access_token' => $access_token,
        'file1' => '@' . $image_abs_path
    );
    $uri = 'https://graph.facebook.com';
    
    $curl = curl_init( $uri );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );  
    curl_setopt( $curl, CURLOPT_POST, TRUE );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields );  
    
    $raw_data = curl_exec( $curl );
    curl_close( $curl );
    
    $data = json_decode( $raw_data, $assoc = TRUE );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)