我是 Facebook 应用程序开发的新手,所以请多多包涵。
有人要求我创建一个 Facebook 页面,并使用一个应用程序让用户将照片上传到页面的一个相册中。
我已经成功创建了页面,我们将其命名为 MyPage
。我还创建了一个应用程序 MyApp
,并将该应用程序添加到主页的个人资料中。现在,当您查看 MyPage
个人资料时,在左侧(选项卡),您已经找到了 MyApp
。
MyApp
指向我的托管帐户上的一个 php 页面。它有一个带有文件字段的表单:
<form action="<?=$PHP_SELF;?>" enctype="multipart/form-data" method="post">
<input name="MAX_FILE_SIZE" type="hidden" value="10000000" />
<input id="fileSelect" name="fileSelect" type="file" />
<input name="submit" type="submit" value="Upload" />
</form>
和下面的代码来处理上传的文件并假设放入MyPage
的相册:
if(count($_FILES)){
$name = ereg_replace(' ', '_', basename($_FILES['fileSelect']['name']));
$uploadFile = "uploads/" . $name;
if (move_uploaded_file($_FILES['fileSelect']['tmp_name'], $uploadFile)) {
$facebook->setFileUploadSupport(true);
$args = array('message' => 'Photo Caption');
$args['image'] = '@' . realpath($uploadFile);
$data = $facebook->api('/THE_ALBUM_ID/photos', 'post', $args);
//get rid of the original on the main server
unlink($uploadFile);
}
}
但是,当提交“上传”按钮时,我在 MyPage
的 MyApp
的 iframe 中收到此错误:
Fatal error: Uncaught OAuthException: (#120) Invalid album id thrown in /COMPLETE_PATH/facebook-php-sdk/src/base_facebook.php on line 1033
即使专辑 ID 确实正确,并且在我使用 Graph API Explorer 或 graph.facebook.com/THE_ALBUM_ID
时显示
顺便说一句,我把它放在脚本的顶部:
require 'facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'THE_APP_ID',
'secret' => 'THE_APP_SECRET',
));
我错过了什么?任何帮助将不胜感激。
最佳答案
我发现通过 Facebook API 将照片上传到页面的唯一方法是作为页面进行。为此,您需要首先验证为页面。为此,您必须:
- 使用
manage_pages
权限向拥有该页面的用户进行身份验证。 请求页面
/me/accounts?access_token=YOUR_ACCESS_TOKEN
找到对应页面的
access_token
。- 使用该
access_token
上传照片。
如果您需要 USERS 将照片上传到页面,您可以获得拥有该页面的用户的长期 token 并存储它以使用该 token 而不是用户 token 来上传照片。上传的照片虽然不会显示为用户上传,但会显示为由页面上传。
关于php - facebook 为页面创建应用程序以将照片上传到页面的相册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140097/