ํ์ด์ค๋ถ 4.x ๋ฒ์ SDK ์ ์ฉํ๊ณ ํ์ด์ค๋ถ ๋ก๊ทธ์ธ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํ๊ฒ ์ต๋๋ค.
์ด์ ๋ฒ์ SDK ์ ์ฉ์ ํ์ด์ค๋ถ ์ฑ์ด ์ค์น๋์ด ์๋ ๊ฒฝ์ฐ ์ ๋๋ก ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ ์ค๋ฅ๊ฐ ์์๋๋ฐ
์ ๋ ์ต์ ๋ฒ์ SDK ์ ์ฉ ํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค์.
๊ธฐ๋ณธ์ ์ผ๋ก developers.facebook์ ํ์ด์ค๋ถ๊ณผ ์ฐ๋ํ ์ฑ ๋ฑ๋กํ์๊ณ App ID๋ ๊ฐ์ง๊ณ ์์ผ์ ์ผํฉ๋๋ค.
AndroidManifest.xml์ App ID๋ฅผ ๋ฑ๋ก ํด์ค์ผ ํ๊ฑฐ๋ ์.
ํ์ด์ค๋ถ์ ์ฑ ๋ฑ๋กํ๋ ๋ถ๋ถ์ ๊ฒ์ํ๋ฉด ๋ง์ด ์์ต๋๋ค
1. ์๋ ๋งํฌ์์ 4 ๋ฒ์ ์ SDK ๋ค์ด ๋ฐ์์ฃผ์ธ์
https://developers.facebook.com/docs/android/downloads
2. SDK ์์ถ ํธ์๊ณ ํ๋ก์ ํธ Import ํ bolts ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐํด์ฃผ์ธ์
3. AndroidManifest.xml ์์ฑ
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="app_id" />
<activity
android:name="com.facebook.FacebookActivity"/>
App ID ์ FacebookActivity ๋ฑ๋กํด์ฃผ์ธ์. App ID๋ ์์ ์ด ์์ฑํ ์์ด๋ ์ ์ผ์ธ์
FacebooActivity ์ ๊ฐ ์์ ํ๋ Activity๊ฐ ์๋ ์ฐ๋ ์ ์๋์ผ๋ก ๋จ๋ Activity์ ๋๋ค.
4. Activity ์์ฑ
import java.util.Arrays;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.corfire.stampy.utils.PreferenceUtil;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphRequest.GraphJSONObjectCallback;
import com.facebook.GraphResponse;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
public class FacebookTestActivity extends Activity {
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(FacebookTestActivity.this,
Arrays.asList("public_profile", "email"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult result) {
GraphRequest request;
request = GraphRequest.newMeRequest(result.getAccessToken(), new GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
if (response.getError() != null) {
} else {
Log.i("TAG", "user: " + user.toString());
Log.i("TAG", "AccessToken: " + result.getAccessToken().getToken());
setResult(RESULT_OK);
finish();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onError(FacebookException error) {
Log.e("test", "Error: " + error);
finish();
}
@Override
public void onCancel() {
finish();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
์ด์ ๋ฒ์ ์์๋ Session ๊ฐ์ฒด๋ฅผ ํตํด์ ํ์ด์ค๋ถ ๋ก๊ทธ์ธ ์ฐ๋ ์์ ์ด ์ด๋ฃจ์ด ์ก๋๋ฐ
์ง๊ธ์ LoginManager ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค์.
์์ ๊ฐ์ด ์์ฑํ๊ณ ํ๋ก์ ํธ ์คํํด ๋ณด๋ฉด Log์์ ์ฌ์ฉ์ ์ ๋ณด์ Token ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
์คํํ๋ค ๋ณด๋ฉด Key Hashes ๋ฌธ์ ๋ก ์๋ฌ๋ก๊ทธ ๋ํ๋๋๋ฐ ๋ก๊ทธ์ ์ฐํ ํด์ฌํค ๊ฐ์
ํ์ด์ค๋ถ ๋๋ฒจ๋กํผ์ ๋ฑ๋กํด์ฃผ๋ฉด ์ ์์ ์ผ๋ก ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ต๋๋ค.
์ถ๊ฐ๋ก ํ์ด์ค๋ถ ์ฐ๋ ๋ก๊ทธ์์ ๋ฐฉ๋ฒ์ ๋๋ค.
LoginManager.getInstance().logOut();
*์ ๋ฐฉ๋ฒ์ด ์๋๋ค๋ฉด ์๋ ๋ด์ฉ ์ฐธ์กฐํด์ฃผ์ธ์.
ํ์ด์ค๋ถ SDK 4.5.1 ํน์ 4.6.0์ดํ๋ก ๋ฐฉ๋ฒ์ด ๋ฐ๋๊ฒ ๊ฐ์ต๋๋ค.
(4.10.0 ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์์
ํ์์ผ๋ฉฐ, 4.7.0 ๋ถํฐ ํด๋น๋ฐฉ๋ฒ์ผ๋ก ์งํํด์ผ ๋๋๊ฒ ๊ฐ์)
SDK ์์ถํ์ผ ๋ค์ด๋ก๋ ํ, ์์ถ์ ํด์ ํฉ๋๋ค.
facebook ํด๋๊ฐ ์์ํ
๋ฐ ํด๋น ํด๋์ .aar ํ์ผ์ด ์์ต๋๋ค.
1. facebook-android-sdk-4.x.x.arr ํ์ผ์ facebook-android-sdk-4.x.x.zip ํ์ผ๋ก ๋ณํํฉ๋๋ค.
2. facebook-android-sdk-4.x.x.zip ํ์ผ์ ์์ถ์ ํด์ ํฉ๋๋ค.
3. ์์ถ์ ํด์ ํ ํด๋์ classes.jar ํ์ผ์ ์ํ๋ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ ํ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
(ex. classes.jar -> facebook-android-sdk-4.x.x.jar)
์ด์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ ์ถ๊ฐํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋์ ์ jar ํ์ผ ์ถ๊ฐํด์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.