我是facebook api的新手,我有一个小问题。 我正在尝试将图片上传到用户的相册。为此,我使用的是我在这里找到的PHP脚本,堆栈溢出:
$app_id = xxx;
$app_secret = "xxx";
$my_url = "http://apps.facebook.com/myapp/test.php";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url);
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
. $app_secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
//upload photo
$file= 'test.png';
$args = array(
'message' => 'Photo from application',
);
$args[basename($file)] = '@' . realpath($file);
print_r($args);
$ch = curl_init();
$url = 'https://graph.facebook.com/2038278/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);
$data = curl_exec($ch);
//returns the photo id
print_r(json_decode($data,true));
但结果是:
数组([message] =&gt;照片来自 application [test.png] =&gt; @ / [mypath] /test.png)数组([错误] =&GT;数组([type] =&gt; OAuthException [message] =&gt;验证错误 应用。 ))
这是什么意思?我是否需要为我的应用程序提供扩展权限? 我给它访问basic和user_photos
非常感谢!
第二个脚本
$ app_id =“xxx”; $ app_secret =“xxx”; $ my_url =“http://apps.facebook.com/myapp/test.php”;
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope=user_photos" ;
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
. $app_secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
$token = $access_token;
//upload photo
$file= 'test.png';
$args = array(
'message' => 'Photo from application',
);
$args[basename($file)] = '@' . realpath($file);
$ch = curl_init();
$url = 'https://graph.facebook.com/me/photos?access_token='.$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);
$data = curl_exec($ch);
print_r(json_decode($data,true));
答案 0 :(得分:1)
亲爱的,当您将任何照片从您的应用程序上传到Facebook时,Facebook会自动创建一个包含您的应用程序名称的相册。你不需要做任何事情。只需从您的应用程序上传任何照片,然后转到您的个人资料,查看所有相册,然后您将看到Facebook已创建一个包含您的应用程序名称的相册,并且您上传的照片就位于其中。
答案 1 :(得分:1)
我认为你需要你的申请才能要求获得publish_stream
的许可。还有一个名为photo_upload
的权限,但据我所知,这被认为是旧的(但可能仍有效)
答案 2 :(得分:0)
user_photos
和publish_stream
(不是必需的,但有利于未来的开发)。Dai Pratt's excellent tutorial on photo uploading via the New Graph API
重要提示:上面的脚本存在严重缺陷 - 它不会检查相册是否已存在,以防您想代表用户上传多张照片。将用户的ID和您在数据库中创建的专辑ID存储起来非常重要,这样您每次用户希望上传图像时都可以查询它,并相应地创建或不创建相册。
编辑:现在,在我发布之后,我在这里看到评论中的确切链接。无论如何 - 希望这会有所帮助:)