@chuseok22/capacitor-kakao-login 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Package.swift
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
// swift-tools-version: 5.9
|
|
2
2
|
import PackageDescription
|
|
3
3
|
|
|
4
|
+
// Capacitor CLI는 npm 패키지명(@chuseok22/capacitor-kakao-login)을 PascalCase로 변환해
|
|
5
|
+
// SPM product 이름을 자동 파생합니다: Chuseok22CapacitorKakaoLogin
|
|
6
|
+
// 이 package/product/target 이름은 Capacitor CLI 변환 규칙과 반드시 일치해야 합니다.
|
|
4
7
|
let package = Package(
|
|
5
|
-
name: "
|
|
8
|
+
name: "Chuseok22CapacitorKakaoLogin",
|
|
6
9
|
platforms: [.iOS(.v13)],
|
|
7
10
|
products: [
|
|
8
11
|
.library(
|
|
9
|
-
name: "
|
|
10
|
-
targets: ["
|
|
12
|
+
name: "Chuseok22CapacitorKakaoLogin",
|
|
13
|
+
targets: ["Chuseok22CapacitorKakaoLogin"]
|
|
11
14
|
)
|
|
12
15
|
],
|
|
13
16
|
dependencies: [
|
|
@@ -16,15 +19,15 @@ let package = Package(
|
|
|
16
19
|
],
|
|
17
20
|
targets: [
|
|
18
21
|
.target(
|
|
19
|
-
name: "
|
|
22
|
+
name: "Chuseok22CapacitorKakaoLogin",
|
|
20
23
|
dependencies: [
|
|
21
24
|
.product(name: "Capacitor", package: "capacitor-swift-pm"),
|
|
22
25
|
.product(name: "Cordova", package: "capacitor-swift-pm"),
|
|
23
26
|
.product(name: "KakaoSDKAuth", package: "kakao-ios-sdk"),
|
|
24
27
|
.product(name: "KakaoSDKUser", package: "kakao-ios-sdk"),
|
|
25
28
|
],
|
|
26
|
-
// 루트 기준 상대 경로
|
|
27
|
-
path: "ios/Sources/
|
|
29
|
+
// 루트 기준 상대 경로
|
|
30
|
+
path: "ios/Sources/Chuseok22CapacitorKakaoLogin"
|
|
28
31
|
)
|
|
29
32
|
]
|
|
30
33
|
)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const APP_VERSION = '0.1.
|
|
1
|
+
export const APP_VERSION = '0.1.4';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
import KakaoSDKAuth
|
|
4
|
+
import KakaoSDKUser
|
|
5
|
+
|
|
6
|
+
/// Capacitor 플러그인 — 카카오 소셜 로그인
|
|
7
|
+
/// @objc(KakaoLoginPlugin)과 identifier는 Capacitor JS 브릿지 식별자로 변경 불가.
|
|
8
|
+
/// SPM 모듈명은 Chuseok22CapacitorKakaoLogin이나, 플러그인 등록명은 KakaoLoginPlugin을 유지한다.
|
|
9
|
+
@objc(KakaoLoginPlugin)
|
|
10
|
+
public class KakaoLoginPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
11
|
+
|
|
12
|
+
public let identifier = "KakaoLoginPlugin"
|
|
13
|
+
public let jsName = "KakaoLogin"
|
|
14
|
+
public let pluginMethods: [CAPPluginMethod] = [
|
|
15
|
+
CAPPluginMethod(name: "login", returnType: CAPPluginReturnPromise)
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
@objc func login(_ call: CAPPluginCall) {
|
|
19
|
+
DispatchQueue.main.async {
|
|
20
|
+
if UserApi.isKakaoTalkLoginAvailable() {
|
|
21
|
+
// 카카오톡 앱 로그인
|
|
22
|
+
UserApi.shared.loginWithKakaoTalk { [weak self] oauthToken, error in
|
|
23
|
+
self?.handleLoginResult(call: call, oauthToken: oauthToken, error: error)
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
// 카카오 계정 웹뷰 로그인 (카카오톡 미설치 환경)
|
|
27
|
+
UserApi.shared.loginWithKakaoAccount { [weak self] oauthToken, error in
|
|
28
|
+
self?.handleLoginResult(call: call, oauthToken: oauthToken, error: error)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private func handleLoginResult(call: CAPPluginCall, oauthToken _: OAuthToken?, error: Error?) {
|
|
35
|
+
if let error = error {
|
|
36
|
+
DispatchQueue.main.async {
|
|
37
|
+
call.reject("카카오 로그인 실패", nil, error)
|
|
38
|
+
}
|
|
39
|
+
return
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
UserApi.shared.me { user, error in
|
|
43
|
+
DispatchQueue.main.async {
|
|
44
|
+
if let error = error {
|
|
45
|
+
call.reject("카카오 사용자 정보 조회 실패", nil, error)
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
guard let userId = user?.id else {
|
|
50
|
+
call.reject("카카오 사용자 ID를 가져올 수 없습니다")
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
call.resolve(["socialId": String(userId)])
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1,57 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import KakaoSDKUser
|
|
5
|
-
|
|
6
|
-
/// Capacitor 플러그인 — 카카오 소셜 로그인
|
|
7
|
-
/// npx cap sync 시 @objc(KakaoLoginPlugin) 패턴으로 자동 탐색된다.
|
|
8
|
-
@objc(KakaoLoginPlugin)
|
|
9
|
-
public class KakaoLoginPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
10
|
-
|
|
11
|
-
public let identifier = "KakaoLoginPlugin"
|
|
12
|
-
public let jsName = "KakaoLogin"
|
|
13
|
-
public let pluginMethods: [CAPPluginMethod] = [
|
|
14
|
-
CAPPluginMethod(name: "login", returnType: CAPPluginReturnPromise)
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
@objc func login(_ call: CAPPluginCall) {
|
|
18
|
-
DispatchQueue.main.async {
|
|
19
|
-
if UserApi.isKakaoTalkLoginAvailable() {
|
|
20
|
-
// 카카오톡 앱 로그인
|
|
21
|
-
UserApi.shared.loginWithKakaoTalk { [weak self] oauthToken, error in
|
|
22
|
-
self?.handleLoginResult(call: call, oauthToken: oauthToken, error: error)
|
|
23
|
-
}
|
|
24
|
-
} else {
|
|
25
|
-
// 카카오 계정 웹뷰 로그인 (카카오톡 미설치 환경)
|
|
26
|
-
UserApi.shared.loginWithKakaoAccount { [weak self] oauthToken, error in
|
|
27
|
-
self?.handleLoginResult(call: call, oauthToken: oauthToken, error: error)
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private func handleLoginResult(call: CAPPluginCall, oauthToken _: OAuthToken?, error: Error?) {
|
|
34
|
-
if let error = error {
|
|
35
|
-
DispatchQueue.main.async {
|
|
36
|
-
call.reject("카카오 로그인 실패", nil, error)
|
|
37
|
-
}
|
|
38
|
-
return
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
UserApi.shared.me { user, error in
|
|
42
|
-
DispatchQueue.main.async {
|
|
43
|
-
if let error = error {
|
|
44
|
-
call.reject("카카오 사용자 정보 조회 실패", nil, error)
|
|
45
|
-
return
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
guard let userId = user?.id else {
|
|
49
|
-
call.reject("카카오 사용자 ID를 가져올 수 없습니다")
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
call.resolve(["socialId": String(userId)])
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
// 이 파일은 더 이상 사용되지 않습니다.
|
|
2
|
+
// 소스는 ios/Sources/Chuseok22CapacitorKakaoLogin/KakaoLoginPlugin.swift 로 이동되었습니다.
|
|
3
|
+
// This file is intentionally left empty to prevent duplicate symbol compilation errors.
|