티스토리 뷰
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
- 일상·생각
- NEXUS S
- STOP_APP_SWITCH
- Ubuntu7.10
- 요리·레시피
- 안드로이드
- 아일랜드
- 프로포즈 데이
- 문학·책
- U123
- 5초 룰
- 잠금화면
- 더블린
- Gutsy
- GutsyGibbon
- setfsb
- IT·컴퓨터
- 하이픈
- 5 sec rule
- Android
- 전화번호
- dex2jar
- 2월 29일
- 레터스 투 줄리엣
- apktool
- 락스크린
- lockscreen
- Leap Year
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |