1. kakao developer ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋กํ๊ธฐ
- ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ
์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ ๋ฑ๋ก
- ์ฌ์ ์๋ช
์ฌ์ ์ ๋ช ์ด ์์ด์ ์ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ๋ฑ๋กํ์ต๋๋ค.
2. pubspec.yaml ํ์ผ์ ์์กด์ฑ ์ค์
dependencies
kakao_flutter_sdk_user: ^1.2.1 # ์นด์นด์ค ๋ก๊ทธ์ธ
pubspec.yaml ํ์ผ์ ํด๋น ์์กด์ฑ์ ์ค์ ํด์ค ํ $ flutter pub get ์คํํด ์ค๋๋ค.
- ์๋ฌ ๋ฐ์1 : Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See`https://guides.cocoapods.org/syntax/podfile.html#platform`
- ํด๊ฒฐ๋ฐฉ๋ฒ
PodFile ์์ target platform์ ‘9.0’ ์ผ๋ก ๋ฐ๊พธ์ด ์ฃผ์
- ํด๊ฒฐ๋ฐฉ๋ฒ
- ์๋ฌ ๋ฐ์2 : [!] CocoaPods could not find compatible versions for pod "kakao_flutter_sdk_common": In Podfile: kakao_flutter_sdk_common (from .symlinks/plugins/kakao_flutter_sdk_common/ios)
Specs satisfying the kakao_flutter_sdk_common (from .symlinks/plugins/kakao_flutter_sdk_common/ios) dependency were found, but they required a higher minimum deployment target.- ํด๊ฒฐ๋ฐฉ๋ฒ
kakao_flutter_sdk_common์ iOS ๋ฒ์ '11.0'์ ์ต์ํ์ผ๋ก ์ง์ํฉ๋๋ค.
๋ฐ๋ผ์ Podfile์ ํ๊น ๋ฒ์ ์ ๋ค์ ํ๋ฒ ๋ฐ๊พธ์ด ์ฃผ์์ต๋๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ
3. Flutter ๋ค์ดํฐ๋ธ ์ฑ ํค ์๋ช
- kakao developer -> ๋ด ์ ํ๋ฆฌ์ผ์ด์ -> ์ฑ์ค์ -> ์ฑ ํค์์ ๋ค์ดํฐ๋ธ ์ฑ ํค๋ฅผ ๋ณต์ฌํฉ๋๋ค.
** ๋ค์ดํฐ๋ธ ์ฑ ํค๋ ๋ค์์๋ ๊ณ์ ํ์ํฉ๋๋ค.
- lib/main.dart
์์์ ๋ณต์ฌํ ๋ค์ดํฐ๋ธ ์ฑ ํค๋ฅผ ๋ถ์ด ๋ฃ์ด์ค๋๋ค.
void main() {
KakaoSdk.init(nativeAppKey: '${YOUR_NATIVE_APP_KEY}');
runApp(const MyApp());
}
4. ํ๋ซํผ ์ ๋ณด ์ ๋ ฅ ๋ฐ ์ค์ - Android
kakao developer์์ ๋ด ์ ํ๋ฆฌ์ผ์ด์ -> ์ฑ ์ค์ -> ํ๋ซํผ -> Andoird ์์
- ํจํค์ง๋ช
android/app/src/main/AndroidManifest.xml ํ์ผ์ package=${ํจํค์ง๋ช }
${ํจํค์ง๋ช } ์ ์์ ํจํค์ง๋ช ์ ์ ๋ ฅํ์ฌ ์ค๋๋ค.
- ๋ง์ผ URL
์ ๋ ฅํ์ง ์์๋ ๋ฉ๋๋ค.
- ํคํด์
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-hash
## Mac ๋๋ฒ๊ทธ ํค ํด์
$ keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
## Windows ๋๋ฒ๊ทธ ํค ํด์
$ keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
terminal์์ ์์ ๋ช ๋ น์ด๋ฅผ ํตํด์ ํค๋ฅผ ์ป์ต๋๋ค. ์ป์ ํค๋ฅผ ํคํด์ ์นธ์ ๋ฑ๋กํฉ๋๋ค.
- ์ธํฐ๋ท ์ฌ์ฉ ๊ถํ
android/app/src/main/AndroidManifest.xml ์ ์ธํฐ๋ท ์ฌ์ฉ ๊ถํ ์ถ๊ฐ
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sample">
<!-- ์ธํฐ๋ท ์ฌ์ฉ ๊ถํ ์ค์ -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
...
- ์ฑํค ์ค์
${Native_APP_KEY} ๋ถ๋ถ์ ๋ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋นํ๋ ์ฑ ํค๋ฅผ ๋ฑ๋กํด์ค๋๋ค.
...
</activity>
<!-- ์นด์นด์ค ์ฑ ํค ์ค์ -->
<activity android:name="com.kakao.sdk.flutter.AuthCodeCustomTabsActivity">
<intent-filter android:label="flutter_web_auth">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="kakao${NATIVE_APP_KEY}" android:host="oauth"/>
</intent-filter>
</activity>
<meta-data
...
5. ํ๋ซํผ ์ ๋ณด ์ ๋ ฅ ๋ฐ ์ค์ - iOS
kakao developer์์ ๋ด ์ ํ๋ฆฌ์ผ์ด์ -> ์ฑ ์ค์ -> ํ๋ซํผ -> iOS ์์
- ๋ฒ๋ค ID
Runner -> Signing & Capabilities ์์ Bundle identifier ๋ณต์ฌ ํ ๋ฒ๋คID ์ ๋ ฅ
- ์ฑ ์คํ ํ์ฉ ๋ชฉ๋ก ์ค์ ํ๊ธฐ
Info.plist ํ์ผ์ ์๋์ ์ฝ๋์ ๊ฐ์ Array ํ์ ์ Keyd์ Value๋ฅผ ๋ฃ์ด์ค๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉ์ ์ ๋ณด ๋ณดํธ๋ฅผ ์ํ OS์ ์ฑ ์ ๋ฐ๋ผ ํ์ํฉ๋๋ค.
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- ์นด์นด์คํก์ผ๋ก ๋ก๊ทธ์ธ -->
<string>kakaokompassauth</string>
</array>
- URL Schemes ์ค์ ํ๊ธฐ
Xcode ์คํ ํ Runner → Info → URL Types → (+์์ด์ฝ ํด๋ฆญ)
→ URL Schemes ์ kakao${NATIVE_APP_KEY} ํ์์ผ๋ก ์ ๋ ฅํด์ค๋๋ค.
kakao developer -> ๋ด ์ ํ๋ฆฌ์ผ์ด์ -> ์ฑ์ค์ -> ์ฑ ํค ์์ NATIVE_APP_KEY๋ฅผ ์ป์ ์ ์์ต๋๋ค.
6. ์นด์นด์ค ๋ก๊ทธ์ธ ๊ด๋ฆฌ์ ์ค์ (KOE004)
- ์นด์นด์ค ๋ก๊ทธ์ธ ํ์ฑํ
kakao Developer -> ๋ด ์ ํ๋ฆฌ์ผ์ด์ -> ์นด์นด์ค ๋ก๊ทธ์ธ ์์ ์นด์นด์ค ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ํ์ฑํ์ํต๋๋ค.
- OpenId Connect ํ์ฑํ
ํ์ฑํ ํด์ผ์ง ํ ํฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
7. AccessToken ๋ฐ์์ค๊ธฐ
- ์นด์นด์ค ๋์ํญ๋ชฉ ์ฒดํฌ
๋์ํญ๋ชฉ์ ํ์๋ก ์ค์ ํ๊ธฐ ์ํด์๋ ๋น์ฆ๋์ค ์ฑ ์ค์ ์ด ํ์ํฉ๋๋ค. ๋น์ฆ๋์ค ์ฑ์ ์์ด์ฝ ๋ฑ๋ก ํ ๊ฐ๋จํ ์ ํํ ์ ์์ต๋๋ค.
8. AccessToken ๋ฐ์์ค๊ธฐ
/**
* ์นด์นด์คํก ์ด๊ธฐ
*/
void tabSignUpKakaoBtn(BuildContext context) async {
try {
if (await isKakaoTalkInstalled()) {
await UserApi.instance.loginWithKakaoTalk();
} else {
await UserApi.instance.loginWithKakaoAccount();
}
getKakaoAccessToken();
} catch (error) {
print(error.toString());
}
}
/**
* kakao accessToken ๋ฐ์์ค๊ธฐ
*/
void getKakaoAccessToken () async {
var tokenManager = await TokenManagerProvider.instance.manager.getToken();
print(tokenManager?.accessToken);
}
- Could not register as server for FlutterObservatoryPublisher์ฝ์งํ๋ค๊ฐ ๋ค์ดํฐ๋ธ ์ฑํค๋ฅผ ์ฌ๋ฐ๊ธ ๋ฐ๊ณ ํด๊ฒฐํ์๋ค.
https://developers.kakao.com/docs/latest/ko/kakaologin/flutter
'๐พ ๊ฐ๋ฐ ๐พ > Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Flutter] Searching for inspections failed: undefined method `map' for nil:NilClass (0) | 2022.08.22 |
---|---|
[Flutter] ... duplicate symbols for architecture ... ์๋ฌ (0) | 2022.08.11 |
[Flutter] iOS ์ฒซ ๋น๋ (0) | 2022.08.04 |
[Flutter] Consumer ์์์ ๋ชจ๋ฌ ๋์ฐ๊ธฐ (0) | 2022.06.28 |
[Flutter] Haptic Feedback ํ ํฑ ๋ฐ์ (0) | 2022.06.28 |