使用Graph API将文件上传到应用页面相册

时间:2012-01-30 19:26:43

标签: php facebook photo

我已经讨论了所有相关主题,但无法找到答案: 是否可以将应用程序照片仅存储在自己的页面相册中? 请注意,每个用户都应将照片上传到同一个相册。 我已经看到应用程序可以在用户/页面配置文件中创建相册,但将所有内容存储在一个位置会更好。
我收到以下错误:

  

未捕获OAuthException:(#120)无效的专辑ID(base_facebook.php第1038行)

代码:

public function setPageToken($userId = 'MY_USER_ID',
        $pageId = 'APP_PAGE_ID')
{
    // get logged in all page
    $args = array
    (
        'fileds'    => 'id,access_token',
        'scope'     => 'manage_pages,publish_stream'
    );
    $accounts = $this->api('/'.$userId.'/accounts','get',$args);
    // fetch the desired page access token
    foreach($accounts['data'] as $k => $v)
    {
        if($v['id'] == $pageId)
        {
            $token = $v['access_token'];
            break;
        }   
    }
    return $token;
}

注意:

  1. 我的应用ID不等于我的应用页面ID
  2. $ accounts返回值为空

1 个答案:

答案 0 :(得分:0)

理论上,这就是你需要做的事情:

  1. 获取具有上传照片权限的网页访问权限。
  2. 硬编码或以其他方式存储后者access token
  3. 下次用户使用您的HTML表单上传照片时,您需要使用后一个访问令牌将照片上传到相册页。
  4. 注意,从理论上讲,这不需要授权正在上传照片的用户。但是,如果问题是您是否可以代表用户将照片上传到第三方页面 - 您不能。

    此外,请注意,如果您使用的是Facebook PHP SDK,则默认的访问令牌将是当前活动会话(用户)的默认值。因此,您需要手动将其更改为页面访问令牌或发出cURL请求。

    $ch = curl_init();
    $url = "https://graph.facebook.com/" . $album_id . "/photos?access_token=" . $access_token;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
    $retdata = curl_exec($ch);
    echo($retdata);
    

    upload photo to page timeline Facebook SDK