Я пытаюсь загрузить изображение на галерею на фан-странице Facebook, вот мой код к настоящему времени,
$ch = curl_init();
$data = array('type' => 'client_cred', 'client_id' => 'app_id','client_secret'=>'secret_key',' redirect_uri'=>'http://apps.facebook.com/my-application/'); // your connect url here
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$rs = curl_exec($ch);
curl_close($ch);
$ch = curl_init();
$data = explode("=",$rs);
$token = $data[1];
$album_id = '1234';
$file= 'http://my.website.com/my-application/sketch.jpg';
$data = array(basename($file) => "@".realpath($file),
//filename, where $row['file_location'] is a file hosted on my server
"caption" => "test",
"aid" => $album_id, //valid aid, as demonstrated above
"access_token" => $token
);
$ch2 = curl_init();
$url = "https://graph.facebook.com/".$album_id."/photos";
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch2, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $data);
$op = curl_exec($ch2);
Когда я повторяю $token, я, кажется, получаю маркер, но когда я запускаю скрипт, я получаю эту ошибку, {"ошибка": {"введите": "OAuthAccessTokenException", "сообщение": "Маркер доступа требуется, чтобы запрашивать этот ресурс".}, я понятия не имею, почему это делает это!
В основном то, что я делаю в том коде, получает маркер доступа с завихрением, и затем, загружая фотографию на мой альбом также через завихрение, но я продолжаю получать ту ошибку!
Любая справка ценилась бы, спасибо!
Хорошо, все заработало, вот код, при условии, что у вас есть действующий сеанс.
$token = $session['access_token'];
//upload photo
$file= 'photo.jpg';
$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);
Это загрузит указанное изображение в галерею владельцев сеансов, создаст альбом, если его нет, также вы можете получить доступ к токену через массив сеанса, как показано выше. Надеюсь, это кому-то поможет.
Возможно, у вашего приложения нет необходимых разрешений.
Чтобы запросить разрешения через OAuth, используйте аргумент области в вашем запрос на авторизацию и включить разделенный запятыми список всех разрешения, которые вы хотите запросить.
http://developers.facebook.com/docs/authentication/permissions