블로그 이미지
매몰

모바일 어플리케이션 개발 1인 기업 고영진모바일입니다. 저와 함께 맛깔스러운 앱을 만들어 보아요~

Rss feed Tistory
개발/android 2013.08.23 11:57

페이스북앱이 설치되어 있을때 페이스북 api로 로그인이 안되는 문제

android facebook api(sdk)로 로그인 작업을 하다 보면 발생하는 치명적인 문제가 있다


폰안에 페이스북앱이 설치되어 있지 않을때는 로그인 화면으로 웹뷰가 띄어지면서 잘 로그인된다.


하지만 페이스북앱이 설치되어 있을때에는 웹뷰가 아닌 페이스북앱이 실행되면서 로그인이 이루어지는데 여기서 버그인지 아님 원래 그런건지 로그인이 계속 실패한다.  

 

처음에는 내가 잘못 코딩한지 알았는데 예제를 돌려봐도 똑같은 현상이 발생했다.


그래서 몇일동안 삽질끝에 해결책을 찾아내었다^^


해결책은 역시 예제안에 숨어있었다ㅎㅎ 예제중에 SwitchUserSample이라는 프로젝트가 있는데

이 예제에서 로그인 유저를 바꿀때에는 항상 로그인 화면 웹뷰가 뜨면서 잘되는것이다ㅎㅎ

이부분을 집중 분석하여 아래와 같은 해결코드를 작성하였다~


public Session mSession;


mSession = new Session.Builder(this).setTokenCachingStrategy(new SharedPreferencesTokenCachingStrategy(this)).build();

Session.OpenRequest openRequest = new Session.OpenRequest(this);

openRequest.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);

openRequest.setRequestCode(Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE);

mSession.openForRead(openRequest); 


또한 로그인후 권한설정에서도 아래와 같이 하면 된다...


mPermissions = Arrays.asList("publish_actions", "user_videos", "read_stream", "share_item");


Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, mPermissions)            .setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO).setDefaultAudience(SessionDefaultAudience.EVERYONE).setRequestCode(Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE);

session.requestNewPublishPermissions(newPermissionsRequest);


안드로이드 페이스북 연동을 하시는 분들께서는 저처럼 삽질하지 마시고 위내용을 참고하여 바로바로 진행하세요~


위내용으로 인해 문제를 해결하셨거나 유용한 정보라고 생각되신다면 댓글 한번 달아주셔요~ ㅎㅎ

그리고 퍼가실때는 반드시 출처 남겨주세요~ ㅎㅎ 







 

 매몰: 고영진 대표/개발자


 고영진모바일 1인기업의 하나뿐인 사람. 

 그밖에 동반자 노트북,스마트폰 

     실패만 하고 있어도 꿈을 포기하지 않는 남자. 

     제가 직접 경험하고 습득한 지식을 위주로 올릴게요. 







사업자 정보 표시
고영진모바일 | 고영진 | 서울특별시 관악구 낙성대동 서울대연구공원 SK상생혁신센터 | 사업자 등록번호 : 109-11-82076 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2010-서울강서-0217호 | 사이버몰의 이용약관 바로가기
  • 감사합니다~ 2013.08.27 10:57 신고 ADDR 수정/삭제 답글

    안그래도 찾아보고 있었는데 좋은 정보 감사드립니다^^

  • 임민영 2013.10.22 09:22 신고 ADDR 수정/삭제 답글

    이것 때문에 반나절을 삽질했는데.. 감사합니다..ㅜㅜ

  • 감사합니다 2013.12.21 01:46 신고 ADDR 수정/삭제 답글

    퍼갈께여 좋은정보 감사합니다. ㅎㅎ

  • 진:D 2014.01.20 20:20 신고 ADDR 수정/삭제 답글

    에뮬레이터에서는 로그인이 잘되고 페북앱만 거치면 로그인이 안되서 스트레스받고 있었는데 위 포스팅을 보고 한번에 해결할 것 같습니다 : ) 정말 감사합니다!

  • 여우좌 2014.02.12 13:10 신고 ADDR 수정/삭제 답글

    필요한 정보 였는데 잘보고 갑니다.
    괜스레 해쉬 코드만 바꿀뻔 했네요
    괜찮으시다면 글좀 퍼가도 될까요?

  • 감사합니다~ 2014.03.25 14:01 신고 ADDR 수정/삭제 답글

    하루종일 개고생하다가 이글보고 해결했네여 감사합니다 ㅎㅎ

  • 질문좀 남기겠습니다. 2014.04.02 12:28 신고 ADDR 수정/삭제 답글

    이 글을 보고 문제 한개를 해결했는데 다른 문제가 한가지 생겼습니다. 이전 소스에서 보면 네트워크가 끊긴 상태에서 로그인을 시도를 해도 로그인 창이 안나왔습니다. 로그인 창 없이 바로 로그인 시도를 하여는데, 위 소스의 경우 네트워크가 끊기면 로그인 창이 나오게 되네요. 다시 네트워크를 연결 해도 로그인창이 나오고요. 한마디로 세션이 사라졌다는 소리인데. 이 문제에 대한 처리 방법은 없을까요?

    • 대세를 따르지 않고 대세를 만드는 매몰 2014.04.05 15:40 신고 수정/삭제

      답글이 늦었네요… 로그인창 없이 바로 로그인이 되어야 하는게 정상인데 그것에 대해서는 저도 미처 살펴보지 못했네요… 시간내서 해결책을 찾은 다음 다시 글을 올려볼게요~

  • 정우정우열매 2014.11.17 15:41 신고 ADDR 수정/삭제 답글

    로그인 팝업이 안떠서 삽질하다가 이거 보고 해결하였습니다. 감사합니다.
    처음엔 킷캣에서 안되는 줄 알았는데 기존 페이스북 앱 때문에 그랫던 거네요.

  • 복덩어리 2014.12.29 16:47 신고 ADDR 수정/삭제 답글

    이것때문에 두달간 헤맸습니다. ㅠㅠ

    SSO_WITH_FALLBACK 옵션으로 되어있었네요 ㅠㅠ

    완전 삽질 했다는.. 정말 감사합니다! 복받으실 거예요!

  • 이방진 2015.03.24 16:01 신고 ADDR 수정/삭제 답글

    저도 삽질했는데.. 이게 알고보니깐 apk로 말지 않고 디버그로 실행하면 그렇게 되더라구요 꼭 저렇게 옵션값줘서 할필요 없습니다 ㅠㅠ..

TOTAL 69,581 TODAY 10