과제를 진행하기 위해서 아래의 설정을 맞춰주세요.
하나의 프로젝트에 1, 2, 3번을 모두 구현해주세요.
프로젝트에 컬렉션 (post)를 만들고 2가지 Document를 만들어 다음의 값을 넣도록 한다.
위의 제공된 코드의 주석을 해제하면 다음과 같이 구현이 가능하다.
trailing의 IconButton을 클릭하면 해당 포스트의 좋아요 수가 +1만큼 올라간다.
주석을 해제하고, 코드를 알맞게 작성하시오.
Firebase의 Authentication을 통하여 다음 중 하나를 선택하여 구현하여 프로젝트에 적용하시오.
flutter_login_facebook: ^1.8.0
facebook developer 홈페이지에 들어가 개발자 등록을 한 후, 앱을 하나 만든다.
필자는 sfac-test로 그냥 대충 지었다. 나중에 수정도 가능하다고 한다.
페이스북 계정으로 로그인하도록 허용 클릭
페이스북 로그인 제품을 추가하면 이렇게 나온다. 여기서 '구성' 셀렉트 창을 누르면 '빠른 시작'을 할 수 있다.
페이스북 SDK를 사용할거라면 1, 2단계를 따라서 한다.
필자는 3단계부터 진행했다.
필자는 어플 이름이 assignment로 되어있어서 이렇게 작성했다. 기본 액티비티 클래스는 동일하게 하고 .MainActivity
붙여준다. Save 버튼 누르면 계속 버튼이 활성화된다.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
필자는 맥북을 사용하기 떄문에 이 코드를 복사해서 터미널에 입력했다.
그럼 28자 키 해시가 생성된다. 이 키를 복사해서 '키 해시' 텍스트필드에 입력하고 Save한다.
처음엔 '아니요'로 되어있다. 클릭하면 토글된다. '예'로 바꿔서 Save
하라는대로 따라하면 된다. 글치만 좀 복잡하다고 느낄 수 있기 때문에 자세히 적어본다.
당연히 android 폴더에 있는 app 폴더를 말한다.
<string name="facebook_app_id">1234</string> //대시보드 상단의 '앱ID' 복붙
<string name="fb_login_protocol_scheme">fb1234</string> // fb'$앱ID' 입력
<string name="facebook_client_token">56789</string> // 대시보드 > 앱 설정 > 고급 설정 > 클라이언트 토큰 복붙
application 태그 내에 복붙한다.
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
이 코드 역시 application 태그 내에 복붙한다.
<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 태그 내에 아래 코드를 복붙한다.
<uses-permission android:name="android.permission.INTERNET"/>
여기에 추가로 광고도 붙이려면 추가해야하는 코드도 따로 있음. 본인은 패스
참고로 필자의 패키지 버전은 아래와 같다. 에뮬레이터를 켰을때 에러가 발생해서 파이어페이스 패키지들을 다운그레이드 시켰다.
dependencies:
cloud_firestore: 4.9.2
cupertino_icons: ^1.0.2
firebase_auth: 4.10.0
firebase_core: 2.16.0
firebase_storage: 11.2.7
flutter:
sdk: flutter
get: ^4.6.6
flutter_login_facebook: ^1.8.0
class AuthController extends GetxController {
final Rxn<FacebookAccessToken> _fbToken = Rxn();
FacebookAccessToken? get token => _fbToken.value;
fbLogin() async {
final fb = FacebookLogin();
final res = await fb.logIn(permissions: [
FacebookPermission.publicProfile,
FacebookPermission.email,
]);
print(res);
if (res.status == 200) {
_fbToken(res.accessToken);
// profile = await fb.getUserProfile();
// imageUrl = await fb.getProfileImageUrl(width: 100);
// email = await fb.getUserEmail();
}
}
logout() {}
_handleAuthChanged(FacebookAccessToken? fbToken) {
if (fbToken != null) {
Get.to(const AssignmentPage());
return;
}
// 로그인 페이지로 이동
Get.to(const LoginPage());
return;
}
void onInit() {
super.onInit();
ever(_fbToken, (fbToken) => _handleAuthChanged(fbToken));
}
}
그런데 에뮬레이터에서 위와 같은 에러가 나왔다. 페이스북 앱을 다운로드받으라는데 어떻게 해야하는건지... SDK를 다운로드했어야하는걸까?? 🤔