본문 바로가기

안드로이드

안드로이드 페이스북 4.0 로그인

반응형

1.  https://developers.facebook.com/  -> My app 으로 가서 Add new Apps 을 해줍니다..

  - 앱 이름 입력하고 카테고리를 선택하면 앱 아이디가 생성됩니다.  

  - 패키지명 , 시작 엑티비티 명 등록합니다

  - 자신의 키 해쉬를 등록합니다(구글맵 키등록하고 비슷한데..  openssl 을 설치 해야 됩니다..)


openssl-0.9.8h-1-setup.exe



2. facebook sdk를 다운 받습니다.. 저는 이클립스에서 개발하는지라.. 따로 받아서 처리를 해놓았습니다. 

 - 아래 첨부 파일 받으시면 됩니다.. 압축풀고 이클립스에서 import 합니다.. 


facebook.zip


 - 에러가 난다면 자바 컴파일러를 1.7로 올려줍니다. 빌드타켓도 올려 줍니다.. 

 - 정상적으로 import 하였으면 , 프로퍼티가셔서  Is Library 체크를 해줍니다.~



3. 로그인을 만들 프로젝트를 하나 생성합니다..

 - 프로퍼티에서 외부 라이브러리로  2에서 설정한 facebook 프로젝트를 불러옵니다.



- 페이스북 로그인 엑티비티(어려운 코드는 없고요.. setReadPermissions 에 주의합니다~)


public class FaceLogIn extends Activity {


private CallbackManager callbackManager;

String id="";

String name="";

String email="";

Context mContext;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mContext = getApplicationContext();


FacebookSdk.sdkInitialize(this.getApplicationContext());

setContentView(R.layout.activity_face);


callbackManager = CallbackManager.Factory.create();

LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);

loginButton.setReadPermissions("email");

loginButton.registerCallback(callbackManager,

new FacebookCallback<LoginResult>() {

@Override

public void onSuccess(LoginResult loginResult) {//로그인이 성공되었을때 호출

GraphRequest request = GraphRequest.newMeRequest(

loginResult.getAccessToken(),

                           new GraphRequest.GraphJSONObjectCallback() {

                               @Override

                               public void onCompleted(

                                       JSONObject object,

                                       GraphResponse response) {

                                   // Application code

                                try {

 

id = (String) response.getJSONObject().get("id");//페이스북 아이디값

name = (String) response.getJSONObject().get("name");//페이스북 이름

email = (String) response.getJSONObject().get("email");//이메일

 

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

                               

                              // new joinTask().execute(); //자신의 서버에서 로그인 처리를 해줍니다

                                 

                               }

                           });

                   Bundle parameters = new Bundle();

                   parameters.putString("fields", "id,name,email,gender, birthday");

                   request.setParameters(parameters);

                   request.executeAsync();

}


@Override

public void onCancel() {

Toast.makeText(FaceLogIn.this, "로그인을 취소 하였습니다!", Toast.LENGTH_SHORT).show();

// App code

}


@Override

public void onError(FacebookException exception) {

Toast.makeText(FaceLogIn.this, "에러가 발생하였습니다", Toast.LENGTH_SHORT).show();

// App code

}

});

}


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

callbackManager.onActivityResult(requestCode, resultCode, data);

Log.d("myLog"  ,"requestCode  "  + requestCode);

Log.d("myLog"  ,"resultCode"  + resultCode);

Log.d("myLog"  ,"data  "  + data.toString());

}

}


- 매니페스트

     <activity

            android:name=".FaceLogIn"

            android:screenOrientation="portrait"

           

        </activity>

        <activity android:name="com.facebook.FacebookActivity" >

        </activity>

        <activity

            android:name="com.facebook.LoginActivity"

            android:label="@string/app_name" >

        </activity>


        <meta-data

            android:name="com.facebook.sdk.ApplicationId"

            android:value="@string/app_id" >

        </meta-data>



-string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>


    <string name="app_id">1에서 받은 자신의 페이스북 앱 아이디를 넣어 줍니다</string>

<string name="share">Share</string>


</resources>


-activity_face.xml

 <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="180dip"

        android:gravity="center"

        android:orientation="vertical" >


        <TextView

            android:layout_width="match_parent"

            android:layout_height="40dip"

            android:gravity="center"

            android:text="Facebook 으로 회원가입/로그인이 가능합니다"

            android:textColor="#000000"

            android:textSize="14dip" >

        </TextView>



        <com.facebook.login.widget.LoginButton

            android:id="@+id/login_button"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center_horizontal"

            android:layout_marginTop="10dip"

            android:gravity="center" />

    </LinearLayout>


4. 앱 배포후 this app still in development mode 문제가 있을때

-> http://stackoverflow.com/questions/21329250/the-developers-of-this-app-have-not-set-up-this-app-properly-for-facebook-login?answertab=active#tab-top 



5. 페이스북 공유하기

CallbackManager callbackManager;

ShareDialog shareDialog;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

FacebookSdk.sdkInitialize(getApplicationContext());

callbackManager = CallbackManager.Factory.create();

shareDialog = new ShareDialog(this);

// this part is optional


if (ShareDialog.canShow(ShareLinkContent.class)) {

ShareLinkContent linkContent = new ShareLinkContent.Builder()

.setContentTitle("제목")

.setContentDescription(

"공유공유")

.setContentUrl(

Uri.parse("https://play.google.com/store/apps/details?id=com.psychology.tarot"))

.build();


shareDialog.show(linkContent);

}

}


@Override

protected void onActivityResult(final int requestCode,

final int resultCode, final Intent data) {

super.onActivityResult(requestCode, resultCode, data);

callbackManager.onActivityResult(requestCode, resultCode, data);

if(resultCode==RESULT_OK){

Toast.makeText(Dialog.this, "공유가 완료 되었습니다", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(Dialog.this, "공유가 취소/실패 되었습니다", Toast.LENGTH_SHORT).show();

}

finish();

}



반응형

'안드로이드' 카테고리의 다른 글

파일다운로드  (0) 2015.09.01
안드로이드 진동과 소리  (0) 2015.08.06
ArrayList 썩기  (0) 2015.05.12
String 에 URL이 포함되었는지 체크  (0) 2015.03.11
이미지 로드 라이브러리 Glide  (0) 2015.03.06