Android app에서 Facebook 연동하기 4

이번에는 페이스북에 글을 올려보도록 하겠습니다.
굉장히 쉽습니다.

먼저 FacebookCon.java 파일을 수정합니다.
강좌 3번까지 코딩해놓은 상태에서
아래와 같이 에디트텍스트 변수를 선언하고 초기화 합니다.

public class FacebookCon extends Activity implements View.OnClickListener
{
  private Facebook mFacebook = new Facebook(C.FACEBOOK_APP_ID);
  private Button mBtnLogin, mBtnFeed, mBtnLogout;
  private EditText mEtContent;
 
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   
    mEtContent = (EditText) findViewById(R.id.etContent);
   
    mBtnLogin = (Button) findViewById(R.id.btnLogin);
    mBtnFeed = (Button) findViewById(R.id.btnFeed);
    mBtnLogout = (Button) findViewById(R.id.btnLogout);
   
    mBtnLogin.setOnClickListener(this);
    mBtnFeed.setOnClickListener(this);
    mBtnLogout.setOnClickListener(this);
  }
... 이하 생략

그리고 private void feed() 함수를 아래와 같이 수정합니다.
  private void feed()
  {
    try
    {
      Log.v(C.LOG_TAG, "access token : " + mFacebook.getAccessToken());
     
      Bundle params = new Bundle();
      params.putString("message", mEtContent.getText().toString());
      params.putString("name", "사용자명");
      params.putString("link", "");
      params.putString("description", "FacebookCon을통해 포스트됨.");
      params.putString("picture", "");

      mFacebook.request("me/feed", params, "POST");
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

수정은 이걸로 끝입니다.
컴파일 -> 실행시켜서 Login버튼 눌러서 먼저 로그인 하시고 에디트 박스에 글을 쓰시고 Write버튼을
눌러주시면 페이스북의 자신의 담벼락에 글이 올라가는것을 알 수 있습니다.

페이스북 로그아웃은 mFacebook.logout(this); 이거 한줄이면 됩니다.
다만 try-catch 문으로 묶어 줘야만 하는거 잊지 마시구요 
다음처럼 logout 메서도를 수정합니다. 

  private void logout()
  {
    try
    {
      mFacebook.logout(this);     
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

여기까지 페이스북 연동을 알아봤습니다.
다만 페이스북에 그림을 직접(URL링크 말고) 올리는 방법을 아직 찾지 못했네요 좀더 연구해봐야겠습니다.
도움 되셨다면 리플 하나씩 남겨주시는 센스!!! ^^

by 선지헌 | 2011/03/16 16:16 | Android | 트랙백 | 덧글(60)

트랙백 주소 : http://jeehun.egloos.com/tb/3998634
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 임병석 at 2011/03/17 13:50
정말 잘 봤습니다.
공부에 도움이 많이 되고 있어요

정말 감사합니다 ^^
나중에 이미지 올리는 것도 함 갈켜주세용 ㅠㅠ
Commented by 임병석 at 2011/03/17 16:00
죄송한데 질문 하나 할께용 ㅠㅠ
글 올릴때 링크를 걸어서 어케 올리나용??

App -> 페이스북으로 링크걸어 글 쓰면
페이스북 웹에서 링크 클릭하면 그 링크로 이동하게 할려구 합니다..
꼭 답변 좀 부탁드립니다 ㅠㅠ
Commented by 선지헌 at 2011/03/17 16:07
도움이 되셨다니 저도 기쁘네요 일단 간단하게 FacebookCon 의 입력창에 링크를 써 넣으시면 페이스북에 링크가 그대로 올라갑니다. 즉 입력창에
"링크테스트 http://daum.net"
이렇게 쓰시고 Write 버튼 눌러주시면 페이스북에 올라갈때 뒤쪽 url은 링크가 걸려서 올라가게 됩니다.
Commented by 김홍기 at 2011/03/17 18:14
완소글 감사합니다 ^^

글 보면서 감사의 눈물이..

정말 자세히 잘 써주셔서 큰큰 도움이 되었습니다!!
Commented by 이태백 at 2011/03/23 16:21
정말 자세한 글 감사합니다.!!
근데..위와 같은 방법은 글을 올릴때 매번 로그인을 해야 하는데
로그인을 유무를 판단하여 바로 글을 올리 수 있게 하려면
어떻게 해야 하나요...???
Commented by 선지헌 at 2011/03/23 23:56
아... 그것은 따로 처리를 해줘야 합니다만 조만간 그 방법도 올려보도록 하겠습니다. 매번 로그인 할 필요 없이 바로 올릴 수도 있으니까요 ^^
Commented by 임병석 at 2011/03/24 11:58
안녕하세요!! 또 왔어용;;;

링크 관련 질문 드렸었는데용..

params.putString("link", "http://www.naver.com");

위와 같이 하면 페이스북에 링크걸린 주소가 올라갑니다.

그러면 페이스북 웹 기능중에 위와 같은 URL 값을 주면 웹에서 URL에

링크를 걸어주고 해당 URL에서 이미지 데이터를 받아 화면에 이미지 뿌려주는

기능?? 이런 기능이 있는데요..

이런 기능을 제공하는거 말고 제가 Facebook으로 이미지를 올리는

API가 있는지 궁금합니다. 혹시 알고 계시면 답변 좀 부탁드립니다 . ^^;;

완전 사랑 합니다 (__)
Commented by 선지헌 at 2011/03/24 13:09
페이스북에 직접 그림을 올리는 기능은 API상으로는 있었는제 제대로 동작하지 않았습니다. 그래서 안그래도 그게 필요한지라 현재 연구중이랍니다. ㅠㅠ
Commented by 초보개발자 at 2011/03/28 00:39
안녕하세요ㅋㅋㅋ

보통 리플 잘 안 쓰는데 정말 많은 도움이 되서 자연스럽게 키보드에 손이 가네요ㅋㅋ

저도 직접 사진 올리는거 하려다가 계속 실패했는데

params.putString("link", "http://www.naver.com");

이런방법으로도 사진이 올라가다니...

정말 많은 도움이 되었습니다

자주와서 배워가도록 하겠습니다^^
Commented by 감사합니다 at 2011/04/11 10:46
궁금한게 있어 질문 드립니다
페이스북과 트위터 연동 공부중에 있는데
트위터는 oAuth 방식과 xAuth 방식이 있는데
페이스북은 xAuth 방식이 지원안하는건가요??
몇일째 찾아봐도 나온게 없어서 여기에 글 올려봅니다
없다면 웹으로 로그인해서 글올리는 방법밖에 없는건지 xAuth 방식이
아닌 다른 방식으로 지원하는건지 답변 좀 부탁드립니다 ^^
위에 글은 많은 도움 되었습니다 감사합니다
Commented by 선지헌 at 2011/04/11 22:58
트위터의 Xauth도 그냥은 사용할수 없구요 아마 트위터에 메일 보내서 사유를 설명해야 할겁니다. 현재 거의 대부분 oauth로 바뀌는 추세라 페이스북도 oauth만 지원하는 것으로 알고 있습니다.
Commented by 강렬눈썹 at 2011/04/11 20:00
대박!! 이거 차근차근 따라하고 나온 한 마디! "대박!"
고맙습니다. 일단 진짜 차근차근 따라하니 그냥 되네요?
정말 큰 도움을 얻었습니다!
즐겨찾기 꿔꿔~
Commented by 선지헌 at 2011/04/11 22:58
도움이 되셨다니 저도 기쁩니다. 제가 공부하면서 힘들었던 부분이 그대로 따라 해도 안되는 경우가 많았던 것이기 때문에 가능한 따라하면 그대로 되도록 구성해봤습니다. ^^
Commented by lee at 2011/05/01 19:28
좋은 자료 감사합니다.
Commented by 선지헌 at 2011/05/26 17:43
^^감사합니다.
Commented by 오종화 at 2011/05/14 03:47
책보다가 막혔던 부분들이 바로 해결되네요.. ^^
트위터 부분과 페이스북 안드로이드 편을 따라해보고 있습니다.
너무 감사드려요...

즐겨찾기에 등록해 두고 종종 들릴께요.. 행복하세요
Commented by 선지헌 at 2011/05/26 17:43
도움되셨다니 기쁘네요 감사합니다.
Commented by 물어보자 at 2011/05/26 16:01
포스팅과 답변잘 받아보았습니다. 정말 너무 감사합니다^^
Commented by 선지헌 at 2011/05/26 17:44
^^ 별건 없지만 종종 찾아주시면 감사드리겠습니다.
Commented by 솔로독백 at 2011/05/27 19:42
안녕하세요. 포스팅 잘 보고 갑니다.

담벼락에 로컬 이미지를 올리는 것은 불가능한걸로 알고 있습니다.

link밖에는 없다는 것이 되겠지요.

그래서 제가 생각한 방법이 앨범에다 우선 사진을 업로드 시키고,

그 업로드한 사진의 URL을 담벼락에다 링크를 걸어주는 방법이였는데...

일반 응용 어플에서는 페이스북의 도메인의 접근권한이 막혀있다는 걸 한참 삽질 후,

알게 되었습니다 ...

참 불합리하죠 ㅎㅎ

Commented by 선지헌 at 2011/05/29 01:08
네 제가 그런 방법으로 시도해 봤습니다만 권한 에러가 떨어지더군요
Commented by 트리 at 2011/06/02 19:32
안녕하세요. 글 잘 보았습니다^^
SSO 는 구현하셨나요?
Example 예제로는 안되었습니다.
Commented by 선지헌 at 2011/06/03 00:00
무슨 말씀이신지?
Commented by 트리 at 2011/06/03 11:48
페이스북 기능중에 Single-Sign-On 기능이 있는데요.
그러면 만약에 내폰에 다른 페이스북 앱이 있고 그 앱에 로그인이 된 상태라면 내 앱에서 id와 패스워드를 입력할 필요없이 허가만 해준다면 로그인이 가능한 기능입니다.
Commented by 선지헌 at 2011/06/03 12:43
그거는 알고 있습니다만... SSO를 사용하는 것은 현재 소스에서도 간단하게 가능은 합니다. http://jeehun.egloos.com/3998472 이 게시물을 참고 하시면 왜 SSO를 이용하지 않았는지 아실수 있는데요 SSO를 사용하기 위해서는 authorize2대신에 authorize 를 호출하시면 됩니다. 다만 그럴 경우(SSO를 통해 로그인 할 경우) 로그인이 되고 나서 항상 사용자가 확인 버튼을 눌러주는 절차가 들어가게 되더라구요 개인적으로 그게 싫어서 페이스북 SDK를 조금 수정해서 authorize2를 만든 것입니다.
Commented by 울동네킹카 at 2011/06/08 17:43
안녕하세요 잘 보고 따라하는 중입니다^^;
write 버튼을 눌러 feed()메소드를 실핼하면 cast exception이 발생하네요;;
Util.java:155
Facebook.java :576
mFacebook.request("me/feed", params, "POST"); 이부분에서 나는데...
혹시 이유와 해결법을 알수 있을가요?
Commented by 선지헌 at 2011/06/08 20:58
바로 전 게시물 http://jeehun.egloos.com/3998472 을 참고해보시기 바랍니다. Util.java와 Facebook.java 파일을 조금 수정해야 하는데 그부분을 빼먹으신건 아닌가 싶네요
Commented by 김영진 at 2011/07/18 18:33
블로그 정말 잘 설명되어있어서 차근차근 잘 봤습니다^^
그런데 잘따라와서 로긴까지 되는데 write눌러도 담벼락에 써지지가 않아요
에러도 안나고 access token: 1623~~~도 잘 뜨는데..말이죠..
혹시 무슨 문제가 있는지 알고 계시나요??
Default buffer size used in BufferedOutPutStream constructor. It would be
이 문구가 뜨는데 해결방법을 모르겠어요 ㅠㅠ
Commented by 선지헌 at 2011/07/21 21:58
음.. 글쎄요 페이스북 앱 등록하실때 Read Only로 되어 있는게 아닌가 싶기도 하네요 한번 확인해보세요
Commented by 김선용 at 2011/07/20 00:36
와 정말 감사합니다 ... 정말 몇일을 찾았는지 몰라요 ㅠㅠ

제가 지금 app을 만들고있는데
글 포스팅하는 부분만 레이아웃에 추가하고 싶은데

지금까지 했던 소스와 레이아웃부분 전체를 추가해야하나요? ㅠ

쉽게 추가할수있는 방법이 없을까요 ㅠ 초보자라 자세히좀 알려주시면 감사하겠습니다 ㅠ
Commented by 선지헌 at 2011/07/21 21:58
에디트 텍스트 부분만 추가해주시고 나머지 로그인과 포스팅 하는 부분만 추가해주시면 될듯 하네요
Commented by 엽땐수 at 2011/07/22 16:43
안녕하세요.
안드로이드 관련 글 보면서 공부하는데 참 많이 도움이 되네요.^^
일단 감사드립니다.~~
근데 재실력이 미천한 관계로.ㅠ.ㅠ 쓰신글보고 공부하고 작성해서 접속하는데까지 잘되었는데요.글이 안써지는거 같아서 좀 여쭤볼까 합니다.

C.java 파일에 작성한 코드 중에서
FACEBOOK_APP_ID 할당한 문자열과 FACEBOOK_AUTH_CODE 에 할당한 32665 는
임의로 하신건아요 아니면, facebook 연동 첫번째 글에서 인증한 코드를 넣어야 하는건가요??

그리고 feed() 함수에 적으신대로 하니까 로그 찍어봤는데. mFacebook.getAccessToken() 값이 NULL 이네요 뭔가 잘못된거 같으데..ㅠ.ㅠ
도움 부탁드립니다.ㅠ.ㅠ

오랜만에 공부할려니 머리가 아프네요.ㅠ.ㅠ
Commented by 선지헌 at 2011/07/24 21:41
FACEBOOK_APP_ID 이 값은 App 작성자가 페이스북에 앱을 등록하면서 받아야 하는 고유 코드키 입니다. 사용자가 임의로 써주면 안되는거구요 FACEBOOK_AUTH_CODE 값은 32665로 무조건 고정입니다 왜냐하면 페이스북 SDK를 까보면 아시겠지만 그 SDK내부에 32665로 정의되어 있으니까요
Commented by 엽땐수 at 2011/07/25 09:15
답변 감사드립니다.^^;;
항상 좋은 글 보면서 공부하는데 참 많이 도움이 되네요.^^;;
Commented by 선지헌 at 2011/07/25 22:51
도움되셨다니 다행입니다. ^^
Commented by ch.eom at 2011/07/25 18:59
안녕하세요. 초보자에게 황금같은 글 잘 보았습니다.
제가 에뮬로 먼저 테스트를 했는데 에뮬에서는 로긴, 글쓰기가 다 잘됐었습니다.
그런데 핸드폰 꼽아서 하니까 로긴이 안되길래 디버그창을 보니까 07-25 18:53:01.312: DEBUG/Facebook-authorize(12570): <!>com.facebook.android.Facebook 415<!> Login failed: invalid_key 이렇게 자꾸 키가 안맞다고 나오는데 혹시 이런 경험 하셨나해서요. 이거 좀 어케 해보려고 해시키 까지 만들고 난리 쳤는데 여전하더라고요. 답변 좀 꼭 부탁드립니다. 굽신굽신
Commented by 선지헌 at 2011/07/25 22:51
헙.. 저는 기기에서도 잘 되던데요 ㅠㅠ
Commented by ch.eom at 2011/07/26 10:56
초보인 저로써는 당췌 이해하기 힘든 부분이네요.
쥔장님께서 만드신 auth 관련 함수를 안쓰고 일부러 Facebook.java에 있던 원래 auth 함수를 썼어요. mFacebook.authorize(this, new String[] {"publish_stream, user_photos, email"}, Facebook.DEFAULT_AUTH_ACTIVITY_CODE, new AuthorizeListener()); 뭐이런식으로요. 그랬더니 엄하게 key에러가 났었고요. 다시 쥔장님 만드신 코드대로 했더니 폰에서도 로긴 잘 됩니다. 글도 잘 써지고...auth2 함수에 비밀이.............
Commented by 211 at 2011/08/06 13:44
저기 궁금한게 잇는데
갤러리에서 사진 찍고 공유를 누르면 페이스북 사진 업로드로 바로 가던데
그건 어케 하는건가요 ?
url을 링크 시키는 건가요 ?
그렇게 할려면 저 위에 코드중에서 어디까지 구현 해야 하나요 인증까진 해야하는?
Commented by 선지헌 at 2011/08/09 22:08
그거는... 아마도 공개된 액티비티를 호출하는 것 같은데요 정확히는 저두 아직 안해봐서 잘... 조만간 함 살펴보도록 하겠습니다.
Commented by 배철환 at 2011/09/24 17:22
정말 고맙습니다. 잘보고 갑니다. ^^
Commented by Rhee at 2011/10/12 17:48
좋은 자료 감사요^^
Commented by xeniiss at 2011/11/12 23:20
이미지 + 텍스트 업로드 에 대해
SDK 내의 sample 코드로 주어진 example.java를 참조하였습니다.

BitmapDrawable bmpDrawable = (BitmapDrawable) getResources()
.getDrawable(R.drawable.facebook_icon);
Bitmap bmp = bmpDrawable.getBitmap();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
Bundle params = new Bundle();

params.putString("caption", /*String*/);
params.putString("method", "photos.upload");
params.putByteArray("picture", outputStream.toByteArray());

mAsyncRunner.request(null, params, "POST",
new UploadListener()/*implement requestListener*/, null);

request 함수의 graphpath 를 null 로 주고 param 을 위와 유사하게 셋팅해주고 날리면 되네요 ~ 내용 추가 부탁드려욤
Commented by 선지헌 at 2011/11/16 12:52
http://jeehun.egloos.com/4008815 이 포스팅에 그림 올리는걸 구현했습니다만 님의 방식은 조금 다른것 같네요 참고하도록 하겠습니다. 감사합니다.
Commented by 구루미군 at 2012/02/04 23:12
혹시 이 부분에 대해서 여쭤보고 싶은게 있는데
worms112@nate.com 로 연락좀 주심 안될까요
Commented by 구루미씨 at 2012/01/05 14:32
포스팅 잘봤습니다

질문 드리고 싶은게 있는데 현재로써는 그러면 제가 페이스북에 글만 말고

제가 찍은 사진까지 업로드 하는게 어떤 방식으로든 길이 없는건가요?

링크 형식으로 링크 걸어주는 길 밖에 없는건가요? 궁금하네요
Commented by 이진우 at 2012/01/10 15:25
정말 감사드립니다. 페이스북 api 공부에 큰 도움이 됐습니다.
존경하고 사랑합니다^^
Commented by seso at 2012/01/22 17:09
안녕하세요, 글 잘 봤습니다. 근데 이상하게도 single sign on 기능을 켜면 key error가 나더군요, 이유는 왜인지 당췌 이해할수가 없네요, 그래서 여기 글에 있는 것처럼 auth2 함수를 써서 SSO를 끄고 사용하고 있는데요,
SSO를 켜면 시작 때마다 확인창이 나온다니, 어쩔 수 없이 SSO를 끌수밖에 없네요...

아 그리고, 혹시 facebook token은 30분인지 2시간 후에 expire되는데, 이런 문제는 혹시 어떻게 해결하셨나요~? 감사합니다^^
Commented by 꽃의전당 at 2012/03/20 15:32
잘 배웠습니다 개발자님~
Commented by 이정은 at 2012/04/05 05:03
아아..ㅜㅜ 처음엔 잘 이해가 안됐는데 포스트를 처음부터 끝까지 정독하니 정말 큰 도움이 되었습니다..
Commented by ljh1116 at 2012/07/19 01:11
안녕하세요. 이거 보고 공부 잘 하고 있습니다.
질문 하나 있는데요. 이 소스 응용하면 전공학과를 소개하는 어플도 만들수 있을까요?
Commented by 조제우 at 2012/08/01 18:26
저도 포스팅 잘 보고 갑니다~~^^
안드로이드 어플 공부하는 학생인데요 oauth 관련해서 궁금해서 질문하나만 드릴게요.
페이스북 인증하고.. redirect uri ? 인가 ? 그거를 다른 페이스북연동 예제에서는 사용하는데요, 저것에 관해 혹시 알고 계신가요 ? 명확한 답을 얻지 못해서요.. 작성자분께서는 redirect 에 관한 내용은 안쓰셨더라구요 ..
Commented by 김동현 at 2012/11/25 16:15
안녕하세요 세심한 설명글에 감탄을 금치못하겠습니다^^
질문 하나 드리자면 현재 login하면 바로 페이스북 창이 꺼지는데
로그인 한 후 페이스북 화면을 유지하려면 어떻게 해야하는지요?
Commented by 진리추구 at 2013/02/22 03:33
많은 도움이 됬습니다!
Commented by 오대성 at 2013/05/13 11:39
정말 많은도움이 되어 감사드립니다
한가지 여쭤볼께 있다면
에뮬레이터에서는 정상적으로 잘 동작이 되는데
왜 기기에서는 로그인 후 글쓰기를 하고나면 실제 페이스북에 글이 안올라가는걸까요..
로그아웃후 로그인도 안되구요.. 삭제후 다시 해야만 로그인이 되는데 그래도 글은
안올라가네요.. 모든 정상적인 동작은 에뮬에서만 돌아가네요..ㅜㅜ 문제가 뭔지..
Commented by ^___^ at 2013/05/14 09:56
정말 너무너무너무 감사합니다~
매우 쉽게 정리가 되어 있어서 금방 처리했네요
Commented by 계피청년 at 2013/07/30 11:42
정말 상세하게 잘 써주셔서 너무 감사합니다.
다만 로그캣을 확인해보니
android.os.NetworkOnMainThreadException 이러한 오류가 발생하네요.
android버전이 몇인지 잘 모르겠지만 현재는 네트워크를 사용하려면 UI Thread에서는 사용이 불가능한거같네요.
글쓰기 기능은 Thread를사용해서 새로 설정해줘야할거같습니다.
Commented by Commented at 2013/08/06 15:45
안녕하세요 한가지 물어볼게있어 글을 남깁니다.
지금 페이스북 어플 연동하여 앱을 제작하는데 로그인 및 다른 활동들을 모두성공적으로 구현하고 테스트하였습니다. 허나 디벨로퍼에 앱을 등록할 때 사용자가 아니면 로그인이 되지가 않습니다. 그이유가 무어잇인가요 ?
Commented by jw at 2013/09/15 02:02
정말 감사합니다. 책을 봐도 잘 해결안되던 문제들이
덕분에 해결되었네요 ㅎㅎ정말 감사합니당
Commented by 불개미 at 2015/07/15 23:12
좋은 정보 감사합니다.
소스도 같이 주실수는 없는지요?

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶