유용한 정보

Facebook Photo Upload - 페이스북 포토 업로드 (Multi Photo Upload)

CyberI 2016. 11. 22. 18:12


Facebook Photo Upload - 페이스북 포토 업로드 (Multi Photo Upload)


Facebook 게시물 발행에 이어서 이번에는 

Facebook Photo Upload에 대해 알아보겠습니다.


사전 준비작업으로 앱 등록access_token이 필요하며,

사진을 업로드하기 위해서는 publish_actions와 user_photos 권한이 반드시 요구됩니다.


(참고: http://cyberx.tistory.com/103 - javascript를 활용한 facebook 로그인 및 게시물 포스팅)

( Facebook 권한 : https://developers.facebook.com/docs/facebook-login/permissions/overview )




1. 단일 Photo Upload


사진을 전송하는 방법은 두 가지가 있습니다.

1. url parameter를 통한 사진의 URL 전송

2. POST file 전송


다음 예는 URL을 이용합니다.

cURL을 이용하거나, 블로그 하단의 예제코드를 참고하세요.

url과 access_token 파라미터는 필수값이며, caption은 옵션입니다. )

curl -i -X POST \
 -d "url=https%3A%2F%2Fwww.facebook.com%2Fimages%2Ffb_icon_325x325.png" \
 -d "caption=test%20photo%20upload" \
 -d "access_token=<user_photos_token>" \
 "https://graph.facebook.com/v2.4/me/photos"


성공적으로 전송이 완료되면 id와 post_id값이 반환됩니다.





2. 멀티 Photo Upload


먼저 사진을 바로 게시하지 않고 업로드만 수행합니다.

( published=false. 파라미터는 사진을 게시하지 않고 업로드만 수행하는 것을 의미합니다. )

curl -i -X POST \
 -d "url=https%3A%2F%2Fwww.facebook.com%2Fimages%2Ffb_icon_325x325.png" \
 -d "caption=test%20photo%20upload" \
 -d "published=false" \
 -d "access_token=<user_photos_token>" \
 "https://graph.facebook.com/v2.4/me/photos"



성공적으로 업로드 시 id를 반환합니다.

또한, 게시되지 않고 업로드된 사진은 페이스북 서버에 약 24시간 동안 페이스북 서버에 남게되며, 24시간 이내에 

사진을 게시하지 않으면 자동으로 삭제됩니다.

{
  "id": "10153677042736789"
}



성공적으로 업로드한 사진들의 반환된 ID값들을 이용하여 Multi Photo Upload를 수행할 수 있습니다.

( 엔드포인트가 아래와 같은 경우 feed에 사진과 message가 같이 게시됩니다. )

curl -i -X POST \
 -d "message=Testing%20multi-photo%20post!" \
 -d "attached_media%5B0%5D=%7B%22media_fbid%22%3A%221002088839996%22%7D" \
 -d "attached_media%5B1%5D=%7B%22media_fbid%22%3A%221002088840149%22%7D" \
 -d "access_token=<publish_actions_token>" \
 "https://graph.facebook.com/v2.4/me/feed"



성공 시 아래와 같은 응답을 얻을 수 있습니다.



PHP는 SDK와 같은 게시 요청을 만들려면 :

$request = new FacebookRequest(
  $session,
  'POST',
  '/me/feed',
  array(
    'message' => 'Testing multi-photo post!',
    'attached_media[0]' => '{"media_fbid":"1002088839996"}',
    'attached_media[1]' => '{"media_fbid":"1002088840149"}'
  )
);

$response = $request->execute();
$graphObject = $response->getGraphObject();
/* handle the result */





3. 예제코드


JAVA를 이용한 예제코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        
 
 
 
public void PhotoUpload(){
    
    String imageURL = "{input your image URL}";
    String access_token ="{input your access_token"};
    
    URL url = null;
    URLConnection connection = null;
    try{
        url = new URL("https://graph.facebook.com/v2.4/me/photos");
     }catch(MalformedURLException me){
            me.printStackTrace();
     }
     connection = url.openConnection();
     connection.setDoOutput(true);
     connection.setDoInput(true);
     connection.setRequestProperty("Content-Type""application/x-www-form-urlencoded");
 
    message = URLEncoder.encode(message, "UTF-8");
    accessToken = URLEncoder.encode(accessToken, "UTF-8");
    String param = "url=" + imageURL + "&access_token=" + accessToken;
        
    try{
        out = new DataOutputStream(connection.getOutputStream());
        out.writeBytes(param);
        out.flush();
    } finally{
        out.close();
    }
 
}        
 
 
cs



이상으로 Facebook (Multi)Photo Upload에 대한 설명을 모두 마치겠습니다.

(참고: Facebook API 문서 : https://developers.facebook.com/docs/)