2011년 6월 15일 수요일

안드로이드 페이스북(facebook) 연동 #3

이전 포스트에 이어서 마지막으로 샘플 예제를 변경해 보도록 하겠습니다.

4. 샘플 예제 변경하여 글등록 하기

 - simple 프로젝트의 Example.java 에 밑 윗쪽에 APP_ID 에 전에 facebook 개발자페이지에서 만들었던 앱아이디를 넣어 줍니다.
 * 이상태로 프로젝트를 실행하면 로그인까지는 됩니다. 그러나 글등록을 하려면 몇가지 소스를 변경해 주어야 합니다.

 - 그리고 맨 밑에 다음의 리스너를 하나 만들어 줍니다. 여기에 메시지 등록후 로직을 넣어 주면 됩니다.
    public class SampleTestListener extends BaseRequestListener {
        public void onComplete(final String response, final Object state) {   
         Log.i("Facebook-Example","메시지 등록 완료");
        }
    }

 - 그런후 onCreate 메소드 안의 다음 부분을 수정해 보도록 하겠습니다.
     mPostButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                mFacebook.dialog(Example.this, "feed",
                        new SampleDialogListener());
            }
        });

 이 부분을

 mPostButton.setOnClickListener(new OnClickListener() {       
   @Override
   public void onClick(View v) { 
    final EditText et_input = new EditText(Example.this); 
    new AlertDialog.Builder(Example.this)
    .setTitle("페이스북 post test")
    .setView(et_input)
    .setPositiveButton("확인", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int whichButton) {
      Bundle params = new Bundle();  
    
      params.putString("message", et_input.getText().toString());          
      mAsyncRunner.request("me/feed", params, "POST", new SampleTestListener(), null);
     }
    })
    .show();  
   }
  });

 이렇게 수정해줍니다.
 메시지는 Bundle에 이런식으로 넣어주면 됩니다.

 - 이렇게 하고 프로젝를 실행하고 글등록을 하면 에러가 납니다. 그러면 facebook 프로젝트의 Util.java 수정해줍니다.

 먼저 다음 메소드를 추가해 줍니다.
    private static boolean weHaveAByteArrayFor(Object object) {
     return byte[].class.isAssignableFrom(object.getClass());
    }

그리고
if (params.getByteArray(key) != null) { 이부분을
if (weHaveAByteArrayFor(params.get(key))) { 이렇게 수정해주고

if (parameters.getByteArray(key) != null) { 이 부분을
if (weHaveAByteArrayFor(parameters.get(key))) { 이렇게 수정해줍니다.

자.. 그럼 소스 수정은 끝났습니다.
실행해 보겠습니다.



본인의 페이스북 계정으로 로그인하면 됩니다.

** 이전 포스트에서 해시키를 정확히 생성했고 facebook 기본 어플이 설치가 되어있다면 아이디 페스워드 입력없이 허가만 해주면 로그인이 가능합니다.

 - 그럼 맨밑에 wall Post 버튼을 클릭하면 다음과 같이 입력 다이얼로그가 나오며 글작성후 확인을 클릭하면 본인의 페이스북 담벼락에 글이 등록이 됩니다.




그림이 별로 없어서 따라하시기 어려웠을것 같네요 --;; 하나하나 순서대로 따라하시면 금방 하실수 있을것 같네요.

그럼 수고 하셨습니다^^

안드로이드 페이스북(facebook) 연동 #2

1. 페이스북 계정 생성및 앱아이디 얻기
2. 해시키 생성하기
3. 샘플 예제 설치하기
4. 샘플 예제 변경하여 포스트 하기

이전 포스트에 이어서..
3. 샘플 예제 설치하기

 https://github.com/facebook/facebook-android-sdk
 - 위의 페이지 오른쪽에보면 Downloads 버튼을 클릭하여 전체 소스를 다운로드 합니다.

- examples 폴더에 보면 simple 폴더가 있습니다. 이클립스에 설치할 폴더는 simple 폴더입니다.

- 이 simple폴더와 examples폴더옆에(^^) 있는 facebook 폴더를 이클립스 작업폴더에 복사합니다.

 - 이제 프로젝트를 생성하겠습니다.
 * 이클립스 프로젝트 생성화면에서 project name 밑에 Contents 항목에서 2번째 Create project~ 를 선택하고 Location 에 facebook 폴더를 지정해주고 Finish 합니다.
 마찬가지로  이클립스 프로젝트 생성화면에서 project name 밑에 Contents 항목에서 2번째 Create project~ 를 선택하고 Location 에 simple폴더를 지정해주고 Finish 합니다.
 
 이렇게 2개의 프로젝트가 생성이 됩니다.

 - 프로젝트가 생성이 되면 simple의 프로젝트는 소스 파일이 모두 엑박이 뜨는데요. 한가지 더 추가해주어야 합니다.

 - 이클립스 왼쪽 메뉴 simple 프로젝트명을 오른쪽 마우스 클릭하여 Properties에서 왼쪽 Android 에 보면 밑에 library 에서 facebook 프로젝트를 추가해주면 됩니다.

## 휴.. 그럼 예제 샘플소스는 설치가 다 되었습니다. 다음은 소스를 조금 수정해보겠습니다. 약간의 버그도 있어 그대로 사용은 할수 없습니다.

4. 샘플 예제 변경하여 포스트 하기는 다음 포스트에서...

안드로이드 페이스북(facebook) 연동 #1

안드로이드에서 페이스북을 연계하여 글 작성하는 방법에 대해 정리하였습니다.

1. 페이스북 계정 생성및 앱아이디 얻기
2. 해시키 생성하기
3. 샘플 예제 설치하기
4. 샘플 예제 변경하여 포스트 하기

먼저 페이스북 연계방식은 OAuth 방식입니다.
트위터는 XAuth 방식을 지원하여 로그인 창을 앱마다 꾸밀수가 있는데 페이스북은 OAuth방식만 지원되기 때문에 웹뷰로 페이스북에서 서비스하고 있는 로그인창에서 로그인을 해야 됩니다.
폰에 facebook 기본 어플이 있다면 SSO를 지원하기 때문에 별도의 로그인창없이 버튼하나로 연계가 가능합니다.

1. 페이스북 계정 생성및 앱아이디 얻기

 - facebook.com 으로 접속하여 계정을 생성합니다.

 - 로그인 하고 맨아래에 '개발자' 링크를 클릭합니다.

 - 맨위 탭에 '내앱'을 클릭합니다.

 - 좌측 상단의 새 앱만들기 버튼을 클릭하여 앱을 만들면 앱ID가 생성됩니다.
   * 어플에 페이스북을 연계하기 위해서 앱에 이 앱ID를 넣어 줘야 합니다.

 - 오른쪽에 '설정관리'를 클릭하고 들어갑니다.
 - 좌측메뉴에 '모바일 및 기타 기기' 를 클릭하면 맨아래 안드로이드 해시키를 넣어주는 부분이 있습니다.
 위에 설정하였던 SSO 기능을 사용하려면 해시키를 생성하여 여기에 넣어주고 저장하면 됩니다.
 SSO기능을 사용하지 않으려면 비워두어도 됩니다.

2. 해시키 생성하기

 - http://developers.facebook.com/  페이스북 개발자 페이지의 왼쪽메뉴에서 '모바일앱' 을 클릭합니다.

- 중간에 Android 개발 정보에 보면 해시키 생성 방법이 있습니다.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
| openssl sha1 -binary
| openssl base64

 위 명령어를 보면 keytool과 openssl 이 있습니다.
 keytool은 jre의 bin폴더에 있고 openssl은 따로 설치를 해줘야 합니다.

 * openssl 설치
 http://gnuwin32.sourceforge.net/packages/openssl.htm 접속합니다.
Complete package, except sources 를 다운받아 설치합니다.

위 명령어를 실행하기위해 path 에 jre 의 bin폴더와 openssl 설치한 bin폴더를 넣어 줍니다.

 - 위 명령어를 보면 -keystore ~/.android/debug.keystore 부분이 나옵니다.
  어플 개발 완료후 생성할 키 값입니다.
  앞의 androiddebugkey 은 별칭이고 ~/.android/debug.keystore 는 경로입니다.
  윈도우로 개발하면 ~/.android/debug.keystore -> C:\android\keysotre 이런식으로 됩니다.
  위 값을 잘못넣어줘도 해시키가 생성이 되니 정확히 넣어줘야 올바른 해시키가 생성이 됩니다. 몇번 잘못 넣어줘서 굉장히 고생한 부분입니다.  연계를 안하려고 까지 하다가 에러 부분을 찾았습니다. --;;
 - 생성한 해쉬키값을 위의 페이스북 페이지에 넣어주고 저장합니다.


3. 샘플 예제 설치하기는 다음 포스트로~