티스토리 뷰

학교/졸업작품

Facebook로 내보내기

사탕맛커피 2011. 8. 19. 21:07

Facebook도 Twitter와 비슷한 방법으로 사용할 수 있다. 다만, Twitter의 경우 Twitter4J와 같은 관련 라이브러리를 사용할 수 있지만, Facebook은 관련 SDK를 오픈 소스로 공개하고 있다.

SDK : https://github.com/facebook/facebook-android-sdk

이중 facebook 폴더의 내용을 프로젝트에 포함한 후 몇 몇 부분을 수정해야 한다.

Facebook.java에서 아래 내용을 주석처리

 

1 authorize(...){ 2 ... 3 // Prefer single sign-on, where available. 4 // if (activityCode >= 0) { 5 // singleSignOnStarted = startSingleSignOn(activity, mAppId, 6 // permissions, activityCode); 7 // } 8 ... 9 } 10

 

Util.java에서 다음과 같이 변경

1 encodePostBody(...){ 2 ... 3 //if (parameters.getByteArray(key) != null) { 4 if (parameters.get(key) instanceof byte[]) { 5 ... 6 } 7 openUrl(...){ 8 ... 9 //if (params.getByteArray(key) != null) { 10 if (params.get(key) instanceof byte[]) { 11 ... 12 }


변경하지 않으면 NullPointException이 발생한다.

Facebook또한 4개의 키가 필요한데. App ID, Secret Code, Session, SessionExpires이다. 앞의 두 값은 개발자 등록하면 얻을 수 있고, Session과 SessionExpires은 앱에서 Facebook페이즈를 통해 인증을 받으면 얻을 수 있다.

다만 Twitter와 다른 점은 세션에 시간 제한이 있다는 점이다. 시간제한 없이 사용하려면 퍼미션에 offline_access를 추가하면 된다. 이때 SessionExpires는 0이 된다.

 

인증은 authorize()함수를 통해 할 수 있고, 퍼미션으로 publish_stream, offline_access를 준다. 로그인 결과는 DialogListener를 parameter로 주어 처리할 수 있다.

글 또는 사진을 업로드 하기 위해서는 Bundle 객체를 하나 만들어 request()메소드를 통해 전달하면 된다.

1 Bundle params = new Bundle(); 2 params.putString("message", ""); 3 params.putString("name", ""); 4 params.putString("link", ""); 5 params.putString("description", ""); 6 params.putString("picture", ""); 7 return mFacebook.request("me/feed", params, "POST");

다만, 글만 올리면 담벼락에 추가되고, 사진을 올리는 경우는 사진첩에 추가된다.

1 Bundle params = new Bundle(); 2 params.putString("message", message); 3 params.putByteArray("picture", bImage); 4 return mFacebook.request("me/photos", params, "POST");

문제는 담벼락으로 사진올리기가 되지 않는다. “me/feed”로는 사진이 올라가지 않고 “me/photos”로만 올라간다. 그래서 사진첩에 사진을 업로드한 뒤, 사진의 업로드 주소를 가져와 link나 picture에 넣어서 담벼락에 올리려 하였으나,

link에 넣고 업로드하면 사진이 표시되는 것이 아니라 주소가 표시되고,

 

##########0*

 

picture에 넣으면 다음 오류 메시지를 출력하면서 업로드되지 않는다.
{"error":{"type":"OAuthException","message":"(#100) FBCDN image is not allowed in stream: http://~~~~

 

아무래도 페이스북 내부서버의 이미지들은 이런식으로 사용할 수 없도록 되어 있는 것 같다.

따라서 담벼락에 그림을 표시할 대안은

 

1. twitpic등의 서비스에 업로드 후 링크를 picture에 넣는다.
2. facebook 사진첩에 업로드 후 그 주소를 link에 넣는다.

 

2번의 경우 사진이 표시가 안되서 좋지 않고, 1번의 경우는 사진이 이중으로 관리되므로 또한 좋지 않다.

그래서 여기에선 약간 돌아가는 방법을 사용하기로 했다.

 

1. 페이스북 사진첩에 업로드 후 사진의 주소를 가져온다.
2. 사진의 주소를 주소 줄이기 서비스로 줄인다.
3. 줄어진 주소를 picture에 넣고 담벼락에 글을 올린다.

 

이렇게 하는 경우 담벼락에 글과 사진이 같이 표시된다. 또 사진은 페이스북 사진첩에만 올라가게 된다.

다만 주소 줄이기 서비스가 서비스를 종료하게 되는 경우 링크가 깨져버리는 문제가 있다.

'학교 > 졸업작품' 카테고리의 다른 글

C2DM Push 사용하기  (0) 2011.08.19
어플 변조를 방지하기 위해서는? (Apktool)  (0) 2011.08.19
Twitter와 연동해보자  (0) 2011.08.19
이전 주소  (0) 2011.08.19
안드로이드 APK 리버스 엔지니어링  (0) 2011.06.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함