개발모음집

facebook login api 본문

Android

facebook login api

void 2017. 7. 31. 22:17

페이스북개발자홈페이지 이 걸 보고 프로젝트 생성 및 해시키등록을 하고

페이스북개발자홈페이지의 개발문서를 보면서 코딩하다가 막히는 부분이 있어 

참고블로그를 보고 참고하였다.

처음보는 사람은 블로그부터보고 차근차근따라하는게 좋을듯하다.


참고블로그를 따라해도 생기는 에러가 있다


Unexpected CallbackManager, please use the provided Factory.

스택오버플로우에 검색해보니 이 에러는 onCreate안에 


// FacebookSdk.sdkInitialize(this.getApplicationContext());

코드를 써주는 대신


callbackManager = CallbackManager.Factory.create();

를 해주면 된다고 한다.


++

참고 블로그에는  


<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />

와 같이 테마를 노타이틀바로 하라고 되어있는데

나는 액티비티의 테마를 noActionBar로 설정해놓고 자체로그인 및 다른 로그인 api를 한 액티비티에 구현한 상태에서 페이스북 로그인 api를 추가하는 거였는데 노타이틀바로 바꾸니



java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.


아래와 같은 에러가 떴다.

그냥 noActionBar로 하니 해결됨


<activity
android:name=".LoginActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/Theme.AppCompat.NoActionBar"/>


사용자 정보 가져오는 방법


faceBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.v("result", object.toString());
try {
email = object.getString("id");
name = object.getString("name");
ImagePath = "http://graph.facebook.com/" + email + "/picture"; }


이미지 패스는 특정 url에 id값을 넣으면 된다고 참고블로그에 나와있다.