2011-08-21 6 views
4

저는 페이스 북의 응용 프로그램 개발에 처음 이니 나와 함께하시기 바랍니다.페이 스북 (Facebook) 페이지의 사진 앨범에 사진을 업로드하는 페이지에 대한 응용 프로그램을 만듭니다.

사용자가 페이지의 앨범 중 하나에 사진을 업로드 할 수있는 응용 프로그램과 함께 Facebook 페이지를 만들도록 요청 받았습니다.

나는 그 페이지를 만들려고하는데, 그것을 MyPage이라고 부르 자. 또한 MyApp 앱을 만들었으며 페이지 프로필에 앱을 추가했습니다. 이제 MyPage 프로필을 볼 때 왼쪽 (탭)에 이미 MyApp이 표시됩니다.

MyApp 내 호스팅 계정의 PHP 페이지로 연결됩니다. 및 가정 MyPage의 앨범에 넣어

<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> 

및 업로드 된 파일을 처리하기 위해 다음 코드를 : 그것은 파일 필드 형태가 그러나

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); 
    } 
} 

을 때 버튼은 "업로드" 앨범 ID가 정말 정확

Fatal error: Uncaught OAuthException: (#120) Invalid album id thrown in /COMPLETE_PATH/facebook-php-sdk/src/base_facebook.php on line 1033 

심지어 tho를하고 표시 할 때 I : 제출, 나는 MyApp에 적합한 MyPage의 iframe에,이 오류가 그런데 graph.facebook.com/THE_ALBUM_ID

를 그래프 API Explorer를 사용하거나, 나는 스크립트의 상단에 넣어 : 나는 무엇을

require 'facebook-php-sdk/src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'THE_APP_ID', 
    'secret' => 'THE_APP_SECRET', 
)); 

를 놓친 거지? 어떤 도움이라도 대단히 감사 할 것입니다.

답변

0

CURL을 사용하고 SDK를 사용하는 대신 그래프 api를 직접 사용해보십시오. 아래는 나를 위해 작동합니다. 토큰, 파일 (파일의 전체 경로) 및 앨범 ID의 배열 인 image라는 변수에 전달하는 함수가 있으며 다음 코드를 사용합니다.

$args = array( 
    'access_token' => $image['token'], 
    'message' => 'Photo Caption', 
    'no_story' => 1 
); 
$args['image'] = '@' . $image['file']; 
$target_url = "https://graph.facebook.com/".$image['album_id']."/photos"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$target_url); 
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);  
curl_exec($ch); 
curl_close($ch); 

당신은 당신이 전화로 전달할 토큰에 부여 된 manage_pagesupload_photos 권한이 있는지 확인해야합니다.

+0

솔루션에서 무엇인가를 명확히하고 싶습니다. "당신이 전달한 토큰에 부여됨"이라고 말하면 내 앱을 방문하는 사용자의 토큰을 참조하고 있습니까? 아니면 페이지 소유자의 자격 증명을 사용하여 서버 측 토큰이됩니까? – mateuscb

+0

주 : 권한은'uploads_photos' 대신에'photo_upload'이어야합니다. – Raptor

+0

cURL 메서드가 작동하지 않습니다. 사진이 사용자의 사진 앨범에 업로드되지만 올바른 앨범 ID가 선택되고 관련 권한이 부여됩니다. 또한 토큰은 페이지 admin에 의해 생성됩니다. – Raptor

2

Facebook API를 통해 사진을 페이지에 업로드하는 방법을 찾은 유일한 방법은 페이지로 사용하는 것입니다. 이를 위해서는 먼저 페이지로 인증해야합니다. manage_pages 권한이있는 페이지를 소유하는 사용자와

  1. 인증합니다 : 당신이해야 할 일.

    /me/accounts?access_token=YOUR_ACCESS_TOKEN

  2. 요청을 페이지는 해당 페이지의 access_token 찾습니다.

  3. access_token 사진을 업로드 할 때 사용하십시오.

USERS가 페이지에 사진을 업로드해야하는 경우 페이지를 소유 한 사용자에게 오래 거주 한 토큰을 받고 사용자 토큰 대신 토큰을 사용하여 사진을 업로드 할 수 있습니다.업로드 된 사진은 사용자로 업로드 된 것처럼 보이지 않지만 페이지에 업로드 된 것처럼 보입니다.

관련 문제