BLOG main image
분류 전체보기 (74)
Cocos2d (9)
낙서장 (4)
스토리지 (1)
안드로이드 (54)
유용한링크 (1)
모바일게임 (2)
추천앱 (1)
아이폰 (0)
맛집/여행 (1)
ナイトウェアメンズ
ナイトウェアメンズ
割烹着 オシャレ
割烹着 オシャレ
klicken Sie einfach auf die bi..
klicken Sie einfach auf die bi..
スポーツ
スポーツ
サンダル
サンダル
282,399 Visitors up to today!
Today 42 hit, Yesterday 39 hit
daisy rss
tistory 티스토리 가입하기!
2015.07.17 11:08
  

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
안드로이드 페이스북 4.0 로그인  (1) 2015.07.17
ArrayList 썩기  (0) 2015.05.12
String 에 URL이 포함되었는지 체크  (0) 2015.03.11
이미지 로드 라이브러리 Glide  (0) 2015.03.06
조봉달 | 2016.03.17 10:52 신고 | PERMALINK | EDIT/DEL | REPLY
혹...com.facebook.login.widget.LoginButton 버튼이 아닌 다른 버튼으로 로그인 처리 및 로그 아웃을 할수 있을까요??
Name
Password
Homepage
Secret