загруженное фото сообщение на facebook альбом

когда ниже представленная форма, действие формы устанавливается в $ graph_url в моем случае, когда выполняется операция добавления имени альбома, описания, операции вставки базы данных изображений после выполнения кода ниже. Я не знаю, как установить $ graph_url до того, как операция вставки базы данных состоялась? ниже code post photo in facebook alubm успешно ….. Любая помощь приветствуется …. это срочно !!!!! plz ….. ниже код взято из https://developers.facebook.com/blog/post/498/

$app_id = "391620680862988"; $app_secret = "62133e5c158218fc4339bf951252e1fa"; $album_name = 'My Album'; $album_description = 'My Album Desc'; $code = ''; //Obtain the access_token with publish_stream permission if(!empty($code)) { $dialog_url= "http://www.facebook.com/dialog/oauth?" . "client_id=" . $app_id . "&scope=publish_stream"; echo("<script>top.location.href='" . $dialog_url . "'</script>"); } else { $token_url= "https://graph.facebook.com/oauth/" . "access_token?" . "client_id=" . $app_id . "&client_secret=" . $app_secret; $access_token = 'AAAFkLUuRzQwBAJ3BmabJCXvaYdag9TZBiDUEHf7XqThFSIZAUCHrFFnQrKu96lOoSPw21TNVvANMlM8kr3yzEv6IT8ZC1XedI9RNEnuxAZDZD'; // Create a new album $graph_url = "https://graph.facebook.com/me/albums?" . "access_token=". $access_token; $postdata = http_build_query( array( 'name' => $album_name, 'message' => $album_description ) ); $opts = array('http' => array( 'method'=> 'POST', 'header'=> 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = json_decode(file_get_contents($graph_url, false, $context)); // Get the new album ID $album_id = $result->id; //Show photo upload form and post to the Graph URL $graph_url = "https://graph.facebook.com/". $album_id . "/photos?access_token=" . $access_token; echo '<html><body>'; echo '<form enctype="multipart/form-data" action="' .$graph_url. ' "method="POST">'; echo 'Adding photo to album: ' . $album_name .'<br/><br/>'; echo 'Please choose a photo: '; echo '<input name="source" type="file"><br/><br/>'; echo 'Say something about this photo: '; echo '<input name="message" type="text" value=""><br/><br/>'; echo '<input type="submit" value="Upload" /><br/>'; echo '</form>'; echo '</body></html>'; } 

Solutions Collecting From Web of "загруженное фото сообщение на facebook альбом"

Вот несколько способов загрузки фотографий с помощью Graph API. В примерах предполагается, что вы создали экземпляр объекта $ facebook и имеете действующий сеанс.

1 – Альбом приложения по умолчанию для текущего пользователя

В этом примере вы загрузите фотографию в свой альбом приложений по умолчанию текущего пользователя. Если альбом еще не существует, он будет создан.

 $facebook->setFileUploadSupport(true); $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($FILE_PATH); $data = $facebook->api('/me/photos', 'post', $args); print_r($data); 

2 – Целевой альбом

Этот пример загрузит фотографию в конкретный альбом.

 $facebook->setFileUploadSupport(true); $args = array('message' => 'Photo Caption'); $args['image'] = '@' . realpath($FILE_PATH); $data = $facebook->api('/'. $ALBUM_ID . '/photos', 'post', $args); print_r($data); 

вы также можете указать это в конструкторе Facebook:

 $facebook = new Facebook(array( 'appId' => 'ID', 'secret' => 'SECRET', 'fileUpload' => true, 'cookie' => true)); 

Другой вариант

 $file = 'image.jpg'; $args = array( 'message' => 'Photo from application', 'access_token'=>urlencode('Your Access token'), ); $args[basename($file)] = '@'.realpath($file); $ch = curl_init(); $url = 'https://graph.facebook.com/me/photos'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); $result = curl_exec($ch); curl_close ($ch); 

EDIT: Это моя функция веб-службы.

 function facebook_upload($fb_oauth_token,$item_image) { $file = $item_image; $args = array( 'access_token'=>urlencode($fb_oauth_token) ); $args[basename($file)] = '@'.($file); $ch = curl_init(); $url = 'https://graph.facebook.com/me/photos'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); 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 $response = json_decode($data,true); //print_r(curl_error($ch)); //to check response //if($response[id]>0){ // yes //} json_decode($data,true); } 

Функция возврата в вашем веб-сервисе:

 $fb_upload = $this->facebook_upload($fb_oauth_token,$item_image); 

Может быть, это поможет вам.

Javascript для отправки общедоступного URL-адреса и токена доступа текущего пользователя.

ПРИМЕЧАНИЕ. Пользователь должен иметь расширенное разрешение publish_stream

 function pictureSharing(){ var title = 'TITLE OF PIC'; var imgURL= 'PUBLIC URL OF IMAGE WANT TO UPLOAD TO FACEBOOK ALBUM'; var postdata= "imageurl="+imgURL+"&access_token="+access_token+"&title="+title; $.ajax({ type: "POST", url: 'picupload.php', data: postdata, success: function (data){ console.log(data) } }); } Now php code for picupload.php file $app_id = "xxxxxxxxxx";<br> $app_secret = "cxxxxxxxxxxxxxxxxxxxxc19c5ec65"; <br> $album_id = "me" ; // this me will upload photo to app name folder on facebook $photo_url = $_REQUEST['imageurl']; $photo_caption = $_REQUEST['title']; $access_token = $_REQUEST["access_token"]; // POST to Graph API endpoint to upload photos $graph_url= "https://graph.facebook.com/".$album_id."/photos?url=".urlencode($photo_url)."&message=".urlencode($photo_caption)."&method=POST&access_token=".$access_token; $pic_id = curl($graph_url); echo $pic_id; function curl($url) { $s = curl_init(); curl_setopt($s,CURLOPT_URL, $url); curl_setopt($s, CURLOPT_SSL_VERIFYPEER, false); $html = curl_exec($s); $status = curl_getinfo($s, CURLINFO_HTTP_CODE); curl_close($s); return $html; } ?>