블로그 이미지
매몰

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

Rss feed Tistory
개발/android 2014.01.09 13:42

페이스북 안드로이드 sdk로 담벼락 글쓰기... 정리 2가지



페이스북 안드로이드 sdk로 어플을 개발하면서 제가 쓰던 글쓰기 코드를 정리해 보았습니다~



페이스북 타임라인에 글을 올릴때 다음과 같이 크게 2가지로 분류된다


1. 이미지 및 동영상 올리기

2. 링크글 올리기 



페이스북 안드로이드 sdk를 이용할때도 이 두가지 분류에 따라서 사용법이 달라진다



1. 이미지 및 동영상 올리기


List<String> permissions = session.getPermissions();

if (permissions.containsAll(mPermissions)) {


AsyncTask<Void, Void, Response> task = new AsyncTask<Void, Void, Response>() {

           

@Override

protected Response doInBackground(Void... voids) {


Bundle param = new Bundle();


//이미지 및 동영상 파일 올리기

File outputfile = new File(mPath);

ParcelFileDescriptor descriptor = ParcelFileDescriptor.open(outputfile, ParcelFileDescriptor.MODE_READ_ONLY);

param.putParcelable(outputfile.getName(), descriptor);


//이미지일 경우 

String graphpath = "/photos";

param.putString("message", "글");


//동영상일 경우

//String graphpath = "/videos";

//param.putString("description", "글");


Request request = new Request(mSession, graphpathparamHttpMethod.POST);

 

return request.executeAndWait();

}

@Override

protected void onPostExecute(Response response) {


try {

GraphObject graphobject = response.getGraphObject();

//결과값

} catch(Exception e) {

e.printStackTrace();

}

}

};

task.execute();

}



2. 링크글 올리기


List<String> permissions = session.getPermissions();

if (permissions.containsAll(mPermissions)) {


AsyncTask<Void, Void, Response> task = new AsyncTask<Void, Void, Response>() {

            

@Override

protected Response doInBackground(Void... voids) {


Bundle param = new Bundle();


param.putString("message", "글");

param.putString("link", "링크주소");


//만약 페이스북글을 링크시키고 싶을때에는 다음과 같이 한다


//////////////이젠 이방식은 안쓰임ㅠㅠ 대신 아랫글을 참고/////////////////

//이미지 글: param.putString("link", "https://www.facebook.com/photo.php?fbid=" + id);

//동영상 글: param.putString("link", "https://www.facebook.com/photo.php?v=" + id);

//id는 해당글의 아이디이다 

////////////////////////////////////////////////14.01.09///////////////


/////////////////////페이스북글 링크시키는 대체된 방식///////////////////

//페이스북글을 파싱해온 필드중에 "link" 값을 그대로 아래에 삽입

param.putString("link", "페이스북글 link 값의 주소");

////////////////////////////////////////////////14.03.03 수정//////////


Request request = new Request(mSession, "/feed"paramHttpMethod.POST);

 

return request.executeAndWait();

}

@Override

protected void onPostExecute(Response response) {


try {

GraphObject graphobject = response.getGraphObject();

//결과값

} catch(Exception e) {

e.printStackTrace();

}

}

};

task.execute();

}



참고로 


위치는

param.putString("place", "지역아이디");


함께하는 사람 태그는

param.putString("tags", "회원아이디1,회원아이디2,회원아이디3");


이다





 

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


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

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

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

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









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

    ↑↑↑↑↑↑안드로이드 페이스북.zip 접속 이용 다운 해보세요 스마트폰 가능

    오래만에 좋은글 보고 가네요.























































작품/노래순위 맞춰볼래? 2013.12.13 20:07

멜론 API를 이용한 순위맞추기 게임

저번 11번가 "동전따기" 게임에 이어 이번에도 SK플래닛 오픈 플랫폼 서포트 그룹 6기에 선정되어진행한 프로젝트입니다~


이번 사용 API는 멜론이에요~


그런데 아쉽게도 현재는 멜론차트와 검색밖에 지원을 안해줍니다...

그래서 멜론차트를 이용해 어떤 아이디어를 내볼까? 고심을 하다가 딱 떠오르는게 있었어요~


내일의 순위 맞추기ㅎㅎ


마켓과 인터넷을 뒤져보니 다행이 이런 어플은 없더라고요ㅎㅎ 

그래서 바로 기획하고 개발에 들어갈려고 했지만ㅎㅎ

기획만 해놓고 다른 프로젝트에 밀려 11월말부터 개발에 착수했습니다....

선정된게 9월달인데ㅎㅎ (개발기간 3개월로 12월 8일까지 런칭해야 하는게 규정)


일단 디자이너분을 개발 시작 전에 급하게 미리 섭외하고 맞겼어요... 

어차피 다른 프로젝트때문에 개발 시작일이 늦어질것 같아서 디자인부터 맞긴거죠ㅎㅎ


하지만 역시 무리였습니다... 일주일만에 완성시킨다는것은..

서버와 클라이언트를 제가 다 하는관계로ㅎㅎ..


그래도 다행히 핵심적은 부분은 다 완성되어 마감전에 런칭하였습니다~





노래순위 맞춰볼래?~~~~


이름 그대로 내일의 멜론차트 순위를 맞추면 되요...


1. 오늘의 멜론차트와 그래프를 보고 내일 '이 노래가 몇위를 하겠다' 라고 생각하며 결정


2. 다음날이나 당일 오후에 발표일이 되면 체점하듯 맞춘노래, 틀린노래가 표시


3. 맞춘만큼 트로피 포인트를 얻고 이 포인트가 모이면 트로피가 주어짐


4. 트로피는 종류마다 각가지 혜택을 줌


이렇게 흘러갑니다...




노래순위 맞춰볼래 인트로화면인트로 화면




로그인은 페이스북과 구글계정 두가지로 구현하였어요...

당연히 페이스북은 페이스북API를 연동한것이고 구글계정은 단순히 구글계정 이메일만 아이디로 빌려오는 방식이에요~ 비밀번호 입력 없어요ㅎㅎ 그러므로 개인정보를 취급하지 않아요~


이는 전작인 "동전따기"가 비밀번호를 받는 형식으로 했었는데 별로 좋은 반응을 얻지 못해서 바꿔 보았습니다... 조만간 "동전따기"도 이런방식으로 바꿀예정이에요...





노래순위 맞춰볼래 차트차트    노래순위 맞춰볼래 예상순위예상순위 맞추기



메인화면이에요~ 

평소에는 예상순위창이 숨어져 있다가 사용자가 손잡이를 누르면 나옵니다.

그리고 간단하게 오늘순위 리스트를 길게 누르고 예상순위창으로 드래그하면 노래가 선택되요..


여기서 예상순위창은  SlidingDrawer가 아닙니다... API 17에서부터 지원이 안되는 관계로 제가 직접 View를 커스텀해서 만들었습니다... 왜 없어진거야ㅠㅠ




노래순위 맞춰볼래 보상트로피 보상




발표시간에는 위와 같이 맞춘 노래와 못맞춘 노래가 각각 나와요...

경마에서처럼 사용자들이 많이 선택한 노래일수록 배당포인트가 적어지도록 구현하였어요...

즉, 다른사람이 선택하지 않은 노래의 순위를 맞추는게 이득인거죠...


여기서 레벨이 오르면 트로피가~ㅎㅎ


노래순위에 관련된거라서 시상식에서 트로피를 받는 컨셉으로 하였습니다...

디자이너분의 의견이었죠~ 저도 그게 좋은것 같아 체택했습니다...




아직 구현되지 않은 부분도 많고... 부족하지만 장인정신으로 한땀한땀 정성스럽게 만들었습니다..

 

다운로드 받아보시고 부족한 점이나 고쳐야 할 점, 추가해야 할 점 좀 알려주세요~





구글플레이스토어

https://play.google.com/store/apps/details?id=com.go13android.guesssongcharts



T스토어

http://tsto.re/0000649339





 

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


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

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

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

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





라인스네이크




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

    이 어플 이벤트상품 언제 주시나요..

    • 대세를 따르지 않고 대세를 만드는 매몰 2014.04.25 10:12 신고 수정/삭제

      런칭이벤트에 선정되신 분들에게는 상품을 보내드렸어요.. 혹시 아직 상품신청을 하시지 않으신건지요? 어플 안에서 메뉴->이멘트상품받기 로 신청해 주세요~ 원래는 상품신청기간이 3월 7일까지 였지만 다시 5월 7로 연장해 뒀습니다~

개발/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,579 TODAY 8