1. https://developers.facebook.com/ -> My app 으로 가서 Add new Apps 을 해줍니다..
- 앱 이름 입력하고 카테고리를 선택하면 앱 아이디가 생성됩니다.
- 패키지명 , 시작 엑티비티 명 등록합니다
- 자신의 키 해쉬를 등록합니다(구글맵 키등록하고 비슷한데.. openssl 을 설치 해야 됩니다..)
2. facebook sdk를 다운 받습니다.. 저는 이클립스에서 개발하는지라.. 따로 받아서 처리를 해놓았습니다.
- 아래 첨부 파일 받으시면 됩니다.. 압축풀고 이클립스에서 import 합니다..
- 에러가 난다면 자바 컴파일러를 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 |