미리 말씀드리면 Firebase를 통한 페이스북로그인연동이 아닙니다. (다릅니다)
일단 다른 로그인연동과 마찬가지로 Facebook for Develover에서 가입을 해줘야합니다. 페이스북아이디가 없다면 회원가입하시고, 있다면 신청만 하시면 됩니다.
https://developers.facebook.com/?locale=ko_KR
이렇게 새 앱을 추가해서 만들어주시구요!!
왼쪽에서 제품에서 Facebook로그인을 추가해주시고, 빠른시작을 선택해줍니다.
저는 필요한부분만 사용해서 구현을 할거구요. 없는부분은 그냥 계속버튼 눌러서 넘겼다고 생각하시면 됩니다.
키 해시를 구해서 추가해주어야 합니다.
구하는 방법은 밑에 들어가시면 나와있습니다^^
https://yhong.tistory.com/2?category=308102
이제 실질적으로 남은부분은 코드넣는부분만 남았습니다. (string.xml은 직접 넣어줘야 합니다)
저희가 수정해야할 파일은 AndroidManifest.xml / MainActivity.java / activity_main.xml / string.xml / build.gradle(Module: app) 입니다
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cookandroid.loginexam"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity> </application> </manifest> |
MainActivity.java
package com.cookandroid.loginexam; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.content.Intent;
import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton;
public class MainActivity extends AppCompatActivity { private CallbackManager callbackManager; LoginButton loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); callbackManager = CallbackManager.Factory.create();
loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions("email");
// Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code }
@Override public void onCancel() { // App code }
@Override public void onError(FacebookException exception) { // App code } }); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { callbackManager.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); } }
|
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<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="30dp" android:layout_marginBottom="30dp" />
</android.support.constraint.ConstraintLayout> |
string.xml
<resources> <string name="app_name">loginexam</string> <string name="facebook_app_id">xxxxxxxxxxxxxxx</string> <string name="fb_login_protocol_scheme">xxxxxxxxxxxxxxxxx</string>
</resources> |
build.gradle(Module:app)
apply plugin: 'com.android.application'
android { compileSdkVersion 27 defaultConfig { applicationId "com.cookandroid.loginexam" minSdkVersion 16 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.facebook.android:facebook-login:[4,5)'
} |
완성되서 실행하면 이렇게 됩니다!!
주의하실점(특히 복사붙여넣기 하실때)
1. 프로젝트 만들때 이름이 다르기때문에 AndroidManifest.xml에서 오류가 날 수 있으니 패키지 이름을 잘 수정하세요.
2. string.xml같은 경우에는 직접 Facebook for Developer에서 복사붙여넣기를 하세요(아마 앱마다 id같은게 다 다를겁니다) - 저같은 경우는 xxxxxx로 표시해놨어요
3. 실질적인 코드는 직접 작성해야합니다. 지금은 로그인을 해도 아무일도 일어나지 않아요!!!!