capacitor3-kakao-login 0.8.2 → 0.8.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.
@@ -8,6 +8,9 @@ export interface Capacitor3KakaoLoginPlugin {
8
8
  kakaoLogin(): Promise<{
9
9
  value: string;
10
10
  }>;
11
+ handleKakaoCallback(): Promise<{
12
+ value: string;
13
+ }>;
11
14
  kakaoLogout(): Promise<{
12
15
  value: string;
13
16
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface Capacitor3KakaoLoginPlugin {\n initializeKakao(options: {\n app_key: string;\n web_key: string;\n }): Promise<{ value: string }>;\n kakaoLogin(): Promise<{ value: string }>;\n kakaoLogout(): Promise<{ value: string }>;\n kakaoUnlink(): Promise<{ value: string }>;\n sendLinkFeed(options: {\n title: string;\n description: string;\n image_url: string;\n image_link_url: string;\n button_title: string;\n }): Promise<{ value: string }>;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface Capacitor3KakaoLoginPlugin {\n initializeKakao(options: {\n app_key: string;\n web_key: string;\n }): Promise<{ value: string }>;\n kakaoLogin(): Promise<{ value: string }>;\n handleKakaoCallback(): Promise<{ value: string }>;\n kakaoLogout(): Promise<{ value: string }>;\n kakaoUnlink(): Promise<{ value: string }>;\n sendLinkFeed(options: {\n title: string;\n description: string;\n image_url: string;\n image_link_url: string;\n button_title: string;\n }): Promise<{ value: string }>;\n}\n"]}
package/dist/esm/web.d.ts CHANGED
@@ -6,7 +6,6 @@ declare global {
6
6
  }
7
7
  export declare class Capacitor3KakaoLoginWeb extends WebPlugin implements Capacitor3KakaoLoginWeb {
8
8
  private kakaoScriptId;
9
- private readonly KAKAO_SDK_VERSION;
10
9
  web_key: any;
11
10
  initializeKakao(options: {
12
11
  app_key: string;
@@ -17,6 +16,9 @@ export declare class Capacitor3KakaoLoginWeb extends WebPlugin implements Capaci
17
16
  kakaoLogin(): Promise<{
18
17
  value: string;
19
18
  }>;
19
+ handleKakaoCallback(): Promise<{
20
+ value: string;
21
+ }>;
20
22
  kakaoLogout(): Promise<{
21
23
  value: string;
22
24
  }>;
package/dist/esm/web.js CHANGED
@@ -3,7 +3,6 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
3
3
  constructor() {
4
4
  super(...arguments);
5
5
  this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script
6
- this.KAKAO_SDK_VERSION = '2.7.4';
7
6
  }
8
7
  initializeKakao(options) {
9
8
  return new Promise(async (resolve, reject) => {
@@ -19,35 +18,31 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
19
18
  }
20
19
  });
21
20
  }
22
- //웹 카카오 로그인
21
+ //웹 카카오 로그인 (SDK 2.0 방식)
23
22
  kakaoLogin() {
24
23
  return new Promise(async (resolve, reject) => {
25
24
  if (!this.web_key) {
26
25
  reject('kakao_sdk_not_initialzed');
27
- }
28
- this.removeKakaoSdk();
29
- await this.loadKakaoSdk();
30
- if (typeof window['Kakao'] !== 'undefined') {
31
- window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key
32
- }
33
- else {
34
- reject(new Error('Kakao undefined'));
26
+ return;
35
27
  }
36
28
  try {
37
- window.Kakao.Auth.login({
29
+ this.removeKakaoSdk();
30
+ await this.loadKakaoSdk();
31
+ if (typeof window['Kakao'] === 'undefined') {
32
+ reject(new Error('Kakao undefined'));
33
+ return;
34
+ }
35
+ // SDK 2.0 초기화
36
+ window.Kakao.init(this.web_key);
37
+ // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
38
+ window.Kakao.Auth.authorize({
39
+ redirectUri: window.location.origin + '/kakao-login-callback',
38
40
  throughTalk: true,
39
- persistAccessToken: true,
40
- success: (response) => {
41
- console.log(response);
42
- resolve({
43
- value: response.access_token,
44
- });
45
- },
46
- fail: (error) => {
47
- console.error('Kakao Login Failed', error);
48
- reject(new Error('Kakao Login Failed'));
49
- },
41
+ state: 'kakao_login_' + Date.now(),
50
42
  });
43
+ // 리다이렉트가 발생하므로 Promise는 즉시 resolve
44
+ // 실제 토큰은 handleKakaoCallback()에서 처리
45
+ resolve({ value: 'redirected' });
51
46
  }
52
47
  catch (e) {
53
48
  console.error('Error during Kakao login', e);
@@ -55,66 +50,181 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
55
50
  }
56
51
  });
57
52
  }
58
- //웹 로그아웃
53
+ //리다이렉트 후 콜백 처리 (SDK 2.0 방식)
54
+ handleKakaoCallback() {
55
+ return new Promise(async (resolve, reject) => {
56
+ if (!this.web_key) {
57
+ reject('kakao_sdk_not_initialzed');
58
+ return;
59
+ }
60
+ // SDK 2.0 초기화
61
+ window.Kakao.init(this.web_key);
62
+ console.log('handleKakaoCallback!!');
63
+ try {
64
+ // URL 파라미터 확인
65
+ const urlParams = new URLSearchParams(window.location.search);
66
+ const code = urlParams.get('code');
67
+ const error = urlParams.get('error');
68
+ if (error) {
69
+ // 에러 파라미터가 있는 경우
70
+ window.history.replaceState({}, '', window.location.pathname);
71
+ reject(new Error(`Kakao Login Failed: ${error}`));
72
+ return;
73
+ }
74
+ if (!code) {
75
+ // 인가 코드가 없는 경우 (리다이렉트 후가 아님)
76
+ reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
77
+ return;
78
+ }
79
+ const accessToken = window.Kakao.Auth.getAccessToken();
80
+ console.log('accessToken:', accessToken);
81
+ if (accessToken) {
82
+ // URL 파라미터 정리
83
+ window.history.replaceState({}, '', window.location.pathname);
84
+ resolve({ value: accessToken });
85
+ }
86
+ else {
87
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
88
+ }
89
+ }
90
+ catch (e) {
91
+ console.error('Error during Kakao callback handling', e);
92
+ reject(e);
93
+ }
94
+ });
95
+ }
96
+ //웹 로그아웃 (SDK 2.0 방식)
59
97
  kakaoLogout() {
60
98
  return new Promise((resolve, reject) => {
61
99
  if (!this.web_key) {
62
100
  reject('kakao_sdk_not_initialzed');
101
+ return;
102
+ }
103
+ try {
104
+ const KakaoSdk = window['Kakao'];
105
+ if (KakaoSdk && KakaoSdk.Auth) {
106
+ // SDK 2.0: logout()은 Promise를 반환할 수 있음
107
+ const logoutResult = KakaoSdk.Auth.logout();
108
+ if (logoutResult && typeof logoutResult.then === 'function') {
109
+ logoutResult
110
+ .then(() => {
111
+ resolve({ value: 'done' });
112
+ })
113
+ .catch((error) => {
114
+ console.error('Kakao Logout Failed', error);
115
+ reject(error);
116
+ });
117
+ }
118
+ else {
119
+ // 동기 방식으로 처리되는 경우
120
+ resolve({ value: 'done' });
121
+ }
122
+ }
123
+ else {
124
+ reject(new Error('Kakao SDK not initialized'));
125
+ }
126
+ }
127
+ catch (e) {
128
+ console.error('Error during Kakao logout', e);
129
+ reject(e);
63
130
  }
64
- const KakaoSdk = window['Kakao'];
65
- KakaoSdk.Auth.logout();
66
- resolve({ value: 'done' });
67
131
  });
68
132
  }
69
- //unlink
133
+ //unlink (SDK 2.0 방식)
70
134
  kakaoUnlink() {
71
135
  return new Promise((resolve, reject) => {
72
136
  if (!this.web_key) {
73
137
  reject('kakao_sdk_not_initialzed');
138
+ return;
139
+ }
140
+ try {
141
+ const KakaoSdk = window['Kakao'];
142
+ if (KakaoSdk && KakaoSdk.API) {
143
+ // SDK 2.0: request()는 Promise를 반환
144
+ KakaoSdk.API.request({
145
+ url: '/v1/user/unlink',
146
+ })
147
+ .then((response) => {
148
+ console.log(response);
149
+ resolve({ value: 'done' });
150
+ })
151
+ .catch((error) => {
152
+ console.error('Kakao Unlink Failed', error);
153
+ reject(error);
154
+ });
155
+ }
156
+ else {
157
+ reject(new Error('Kakao SDK not initialized'));
158
+ }
159
+ }
160
+ catch (e) {
161
+ console.error('Error during Kakao unlink', e);
162
+ reject(e);
74
163
  }
75
- const KakaoSdk = window['Kakao'];
76
- KakaoSdk.API.request({
77
- url: '/v1/user/unlink',
78
- success: function (response) {
79
- console.log(response);
80
- resolve({ value: 'done' });
81
- },
82
- fail: function (error) {
83
- console.log(error);
84
- reject(error);
85
- },
86
- });
87
164
  });
88
165
  }
89
- //message
166
+ //message (SDK 2.0 방식)
90
167
  sendLinkFeed(options) {
91
168
  return new Promise((resolve, reject) => {
92
169
  if (!this.web_key) {
93
170
  reject('kakao_sdk_not_initialzed');
171
+ return;
94
172
  }
95
- const KakaoSdk = window['Kakao'];
96
- KakaoSdk.Link.sendDefault({
97
- objectType: 'feed',
98
- content: {
99
- title: options.title,
100
- description: options.description,
101
- imageUrl: options.image_url,
102
- link: {
103
- mobileWebUrl: options.image_link_url,
104
- },
105
- },
106
- buttons: [
107
- {
108
- title: options.button_title,
109
- link: {
110
- mobileWebUrl: options.image_link_url,
173
+ try {
174
+ const KakaoSdk = window['Kakao'];
175
+ if (KakaoSdk && KakaoSdk.Link) {
176
+ // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음
177
+ const sendResult = KakaoSdk.Link.sendDefault({
178
+ objectType: 'feed',
179
+ content: {
180
+ title: options.title,
181
+ description: options.description,
182
+ imageUrl: options.image_url,
183
+ link: {
184
+ mobileWebUrl: options.image_link_url,
185
+ },
111
186
  },
112
- },
113
- ],
114
- callback: function () {
115
- resolve({ value: 'done' });
116
- },
117
- });
187
+ buttons: [
188
+ {
189
+ title: options.button_title,
190
+ link: {
191
+ mobileWebUrl: options.image_link_url,
192
+ },
193
+ },
194
+ ],
195
+ });
196
+ if (sendResult && typeof sendResult.then === 'function') {
197
+ // Promise 기반 API
198
+ sendResult
199
+ .then(() => {
200
+ resolve({ value: 'done' });
201
+ })
202
+ .catch((error) => {
203
+ console.error('Kakao Link Send Failed', error);
204
+ reject(error);
205
+ });
206
+ }
207
+ else {
208
+ // 콜백 방식 (하위 호환성)
209
+ if (typeof sendResult === 'object' && sendResult.callback) {
210
+ sendResult.callback = function () {
211
+ resolve({ value: 'done' });
212
+ };
213
+ }
214
+ else {
215
+ // 콜백이 없는 경우 직접 resolve
216
+ resolve({ value: 'done' });
217
+ }
218
+ }
219
+ }
220
+ else {
221
+ reject(new Error('Kakao SDK not initialized'));
222
+ }
223
+ }
224
+ catch (e) {
225
+ console.error('Error during Kakao link send', e);
226
+ reject(e);
227
+ }
118
228
  });
119
229
  }
120
230
  removeKakaoSdk() {
@@ -133,8 +243,10 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
133
243
  }
134
244
  const script = document.createElement('script');
135
245
  script.id = this.kakaoScriptId; // Set an ID to reference this script
136
- script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;
137
- script.crossOrigin = 'anonymous';
246
+ // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용
247
+ script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';
248
+ // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';
249
+ // script.crossOrigin = 'anonymous';
138
250
  script.onload = () => {
139
251
  console.log('Kakao SDK loaded');
140
252
  resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\n// declare var Kakao: any;\ndeclare global {\n interface Window {\n Kakao: any; // You can replace 'any' with a more specific type if available\n }\n}\n\nexport class Capacitor3KakaoLoginWeb\n extends WebPlugin\n implements Capacitor3KakaoLoginWeb\n{\n private kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n private readonly KAKAO_SDK_VERSION = '2.7.4';\n web_key: any;\n\n initializeKakao(options: { app_key: string; web_key: string }) {\n return new Promise<{ value: string }>(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n } catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n\n //웹 카카오 로그인\n kakaoLogin() {\n return new Promise<{ value: string }>(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] !== 'undefined') {\n window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key\n } else {\n reject(new Error('Kakao undefined'));\n }\n\n try {\n window.Kakao!.Auth.login({\n throughTalk: true,\n persistAccessToken: true,\n success: (response: any) => {\n console.log(response);\n\n resolve({\n value: response.access_token,\n });\n },\n fail: (error: any) => {\n console.error('Kakao Login Failed', error);\n reject(new Error('Kakao Login Failed'));\n },\n });\n } catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n\n //웹 로그아웃\n kakaoLogout() {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n\n const KakaoSdk: any = window['Kakao'];\n KakaoSdk.Auth.logout();\n resolve({ value: 'done' });\n });\n }\n\n //unlink\n kakaoUnlink() {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n\n const KakaoSdk: any = window['Kakao'];\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n success: function (response: any) {\n console.log(response);\n resolve({ value: 'done' });\n },\n fail: function (error: any) {\n console.log(error);\n reject(error);\n },\n });\n });\n }\n\n //message\n sendLinkFeed(options: {\n title: string;\n description: string;\n image_url: string;\n image_link_url: string;\n button_title: string;\n }) {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk: any = window['Kakao'];\n KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n callback: function () {\n resolve({ value: 'done' });\n },\n });\n });\n }\n\n private removeKakaoSdk(): void {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n\n private loadKakaoSdk(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;\n script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n"]}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\n// declare var Kakao: any;\ndeclare global {\n interface Window {\n Kakao: any; // You can replace 'any' with a more specific type if available\n }\n}\n\nexport class Capacitor3KakaoLoginWeb\n extends WebPlugin\n implements Capacitor3KakaoLoginWeb\n{\n private kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n web_key: any;\n\n initializeKakao(options: { app_key: string; web_key: string }) {\n return new Promise<{ value: string }>(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n } catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n\n //웹 카카오 로그인 (SDK 2.0 방식)\n kakaoLogin() {\n return new Promise<{ value: string }>(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n\n try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('Kakao undefined'));\n return;\n }\n\n // SDK 2.0 초기화\n window.Kakao!.init(this.web_key);\n\n // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)\n window.Kakao!.Auth.authorize({\n redirectUri: window.location.origin + '/kakao-login-callback',\n throughTalk: true,\n state: 'kakao_login_' + Date.now(),\n });\n\n // 리다이렉트가 발생하므로 Promise는 즉시 resolve\n // 실제 토큰은 handleKakaoCallback()에서 처리\n resolve({ value: 'redirected' });\n } catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n\n //리다이렉트 후 콜백 처리 (SDK 2.0 방식)\n handleKakaoCallback() {\n return new Promise<{ value: string }>(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n\n\n // SDK 2.0 초기화\n window.Kakao!.init(this.web_key);\n\n\n console.log('handleKakaoCallback!!');\n try {\n // URL 파라미터 확인\n const urlParams = new URLSearchParams(window.location.search);\n const code = urlParams.get('code');\n const error = urlParams.get('error');\n \n if (error) {\n // 에러 파라미터가 있는 경우\n window.history.replaceState({}, '', window.location.pathname);\n reject(new Error(`Kakao Login Failed: ${error}`));\n return;\n }\n\n if (!code) {\n // 인가 코드가 없는 경우 (리다이렉트 후가 아님)\n reject(\n new Error(\n 'No authorization code found. Please call kakaoLogin() first.',\n ),\n );\n return;\n }\n \n const accessToken = window.Kakao!.Auth.getAccessToken();\n console.log('accessToken:', accessToken);\n if (accessToken) {\n // URL 파라미터 정리\n window.history.replaceState({}, '', window.location.pathname);\n resolve({ value: accessToken });\n } else {\n reject(new Error('Kakao Login Failed: Token exchange failed'));\n }\n } catch (e) {\n console.error('Error during Kakao callback handling', e);\n reject(e);\n }\n });\n }\n\n //웹 로그아웃 (SDK 2.0 방식)\n kakaoLogout() {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n\n try {\n const KakaoSdk: any = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Auth) {\n // SDK 2.0: logout()은 Promise를 반환할 수 있음\n const logoutResult = KakaoSdk.Auth.logout();\n if (logoutResult && typeof logoutResult.then === 'function') {\n logoutResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error: any) => {\n console.error('Kakao Logout Failed', error);\n reject(error);\n });\n } else {\n // 동기 방식으로 처리되는 경우\n resolve({ value: 'done' });\n }\n } else {\n reject(new Error('Kakao SDK not initialized'));\n }\n } catch (e) {\n console.error('Error during Kakao logout', e);\n reject(e);\n }\n });\n }\n\n //unlink (SDK 2.0 방식)\n kakaoUnlink() {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n\n try {\n const KakaoSdk: any = window['Kakao'];\n if (KakaoSdk && KakaoSdk.API) {\n // SDK 2.0: request()는 Promise를 반환\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n })\n .then((response: any) => {\n console.log(response);\n resolve({ value: 'done' });\n })\n .catch((error: any) => {\n console.error('Kakao Unlink Failed', error);\n reject(error);\n });\n } else {\n reject(new Error('Kakao SDK not initialized'));\n }\n } catch (e) {\n console.error('Error during Kakao unlink', e);\n reject(e);\n }\n });\n }\n\n //message (SDK 2.0 방식)\n sendLinkFeed(options: {\n title: string;\n description: string;\n image_url: string;\n image_link_url: string;\n button_title: string;\n }) {\n return new Promise<{ value: string }>((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n\n try {\n const KakaoSdk: any = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Link) {\n // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음\n const sendResult = KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n });\n\n if (sendResult && typeof sendResult.then === 'function') {\n // Promise 기반 API\n sendResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error: any) => {\n console.error('Kakao Link Send Failed', error);\n reject(error);\n });\n } else {\n // 콜백 방식 (하위 호환성)\n if (typeof sendResult === 'object' && sendResult.callback) {\n sendResult.callback = function () {\n resolve({ value: 'done' });\n };\n } else {\n // 콜백이 없는 경우 직접 resolve\n resolve({ value: 'done' });\n }\n }\n } else {\n reject(new Error('Kakao SDK not initialized'));\n }\n } catch (e) {\n console.error('Error during Kakao link send', e);\n reject(e);\n }\n });\n }\n\n private removeKakaoSdk(): void {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n\n private loadKakaoSdk(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용\n script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';\n // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';\n // script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n"]}
@@ -12,7 +12,6 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script
15
- this.KAKAO_SDK_VERSION = '2.7.4';
16
15
  }
17
16
  initializeKakao(options) {
18
17
  return new Promise(async (resolve, reject) => {
@@ -28,35 +27,31 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
28
27
  }
29
28
  });
30
29
  }
31
- //웹 카카오 로그인
30
+ //웹 카카오 로그인 (SDK 2.0 방식)
32
31
  kakaoLogin() {
33
32
  return new Promise(async (resolve, reject) => {
34
33
  if (!this.web_key) {
35
34
  reject('kakao_sdk_not_initialzed');
36
- }
37
- this.removeKakaoSdk();
38
- await this.loadKakaoSdk();
39
- if (typeof window['Kakao'] !== 'undefined') {
40
- window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key
41
- }
42
- else {
43
- reject(new Error('Kakao undefined'));
35
+ return;
44
36
  }
45
37
  try {
46
- window.Kakao.Auth.login({
38
+ this.removeKakaoSdk();
39
+ await this.loadKakaoSdk();
40
+ if (typeof window['Kakao'] === 'undefined') {
41
+ reject(new Error('Kakao undefined'));
42
+ return;
43
+ }
44
+ // SDK 2.0 초기화
45
+ window.Kakao.init(this.web_key);
46
+ // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
47
+ window.Kakao.Auth.authorize({
48
+ redirectUri: window.location.origin + '/kakao-login-callback',
47
49
  throughTalk: true,
48
- persistAccessToken: true,
49
- success: (response) => {
50
- console.log(response);
51
- resolve({
52
- value: response.access_token,
53
- });
54
- },
55
- fail: (error) => {
56
- console.error('Kakao Login Failed', error);
57
- reject(new Error('Kakao Login Failed'));
58
- },
50
+ state: 'kakao_login_' + Date.now(),
59
51
  });
52
+ // 리다이렉트가 발생하므로 Promise는 즉시 resolve
53
+ // 실제 토큰은 handleKakaoCallback()에서 처리
54
+ resolve({ value: 'redirected' });
60
55
  }
61
56
  catch (e) {
62
57
  console.error('Error during Kakao login', e);
@@ -64,66 +59,181 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
64
59
  }
65
60
  });
66
61
  }
67
- //웹 로그아웃
62
+ //리다이렉트 후 콜백 처리 (SDK 2.0 방식)
63
+ handleKakaoCallback() {
64
+ return new Promise(async (resolve, reject) => {
65
+ if (!this.web_key) {
66
+ reject('kakao_sdk_not_initialzed');
67
+ return;
68
+ }
69
+ // SDK 2.0 초기화
70
+ window.Kakao.init(this.web_key);
71
+ console.log('handleKakaoCallback!!');
72
+ try {
73
+ // URL 파라미터 확인
74
+ const urlParams = new URLSearchParams(window.location.search);
75
+ const code = urlParams.get('code');
76
+ const error = urlParams.get('error');
77
+ if (error) {
78
+ // 에러 파라미터가 있는 경우
79
+ window.history.replaceState({}, '', window.location.pathname);
80
+ reject(new Error(`Kakao Login Failed: ${error}`));
81
+ return;
82
+ }
83
+ if (!code) {
84
+ // 인가 코드가 없는 경우 (리다이렉트 후가 아님)
85
+ reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
86
+ return;
87
+ }
88
+ const accessToken = window.Kakao.Auth.getAccessToken();
89
+ console.log('accessToken:', accessToken);
90
+ if (accessToken) {
91
+ // URL 파라미터 정리
92
+ window.history.replaceState({}, '', window.location.pathname);
93
+ resolve({ value: accessToken });
94
+ }
95
+ else {
96
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
97
+ }
98
+ }
99
+ catch (e) {
100
+ console.error('Error during Kakao callback handling', e);
101
+ reject(e);
102
+ }
103
+ });
104
+ }
105
+ //웹 로그아웃 (SDK 2.0 방식)
68
106
  kakaoLogout() {
69
107
  return new Promise((resolve, reject) => {
70
108
  if (!this.web_key) {
71
109
  reject('kakao_sdk_not_initialzed');
110
+ return;
111
+ }
112
+ try {
113
+ const KakaoSdk = window['Kakao'];
114
+ if (KakaoSdk && KakaoSdk.Auth) {
115
+ // SDK 2.0: logout()은 Promise를 반환할 수 있음
116
+ const logoutResult = KakaoSdk.Auth.logout();
117
+ if (logoutResult && typeof logoutResult.then === 'function') {
118
+ logoutResult
119
+ .then(() => {
120
+ resolve({ value: 'done' });
121
+ })
122
+ .catch((error) => {
123
+ console.error('Kakao Logout Failed', error);
124
+ reject(error);
125
+ });
126
+ }
127
+ else {
128
+ // 동기 방식으로 처리되는 경우
129
+ resolve({ value: 'done' });
130
+ }
131
+ }
132
+ else {
133
+ reject(new Error('Kakao SDK not initialized'));
134
+ }
135
+ }
136
+ catch (e) {
137
+ console.error('Error during Kakao logout', e);
138
+ reject(e);
72
139
  }
73
- const KakaoSdk = window['Kakao'];
74
- KakaoSdk.Auth.logout();
75
- resolve({ value: 'done' });
76
140
  });
77
141
  }
78
- //unlink
142
+ //unlink (SDK 2.0 방식)
79
143
  kakaoUnlink() {
80
144
  return new Promise((resolve, reject) => {
81
145
  if (!this.web_key) {
82
146
  reject('kakao_sdk_not_initialzed');
147
+ return;
148
+ }
149
+ try {
150
+ const KakaoSdk = window['Kakao'];
151
+ if (KakaoSdk && KakaoSdk.API) {
152
+ // SDK 2.0: request()는 Promise를 반환
153
+ KakaoSdk.API.request({
154
+ url: '/v1/user/unlink',
155
+ })
156
+ .then((response) => {
157
+ console.log(response);
158
+ resolve({ value: 'done' });
159
+ })
160
+ .catch((error) => {
161
+ console.error('Kakao Unlink Failed', error);
162
+ reject(error);
163
+ });
164
+ }
165
+ else {
166
+ reject(new Error('Kakao SDK not initialized'));
167
+ }
168
+ }
169
+ catch (e) {
170
+ console.error('Error during Kakao unlink', e);
171
+ reject(e);
83
172
  }
84
- const KakaoSdk = window['Kakao'];
85
- KakaoSdk.API.request({
86
- url: '/v1/user/unlink',
87
- success: function (response) {
88
- console.log(response);
89
- resolve({ value: 'done' });
90
- },
91
- fail: function (error) {
92
- console.log(error);
93
- reject(error);
94
- },
95
- });
96
173
  });
97
174
  }
98
- //message
175
+ //message (SDK 2.0 방식)
99
176
  sendLinkFeed(options) {
100
177
  return new Promise((resolve, reject) => {
101
178
  if (!this.web_key) {
102
179
  reject('kakao_sdk_not_initialzed');
180
+ return;
103
181
  }
104
- const KakaoSdk = window['Kakao'];
105
- KakaoSdk.Link.sendDefault({
106
- objectType: 'feed',
107
- content: {
108
- title: options.title,
109
- description: options.description,
110
- imageUrl: options.image_url,
111
- link: {
112
- mobileWebUrl: options.image_link_url,
113
- },
114
- },
115
- buttons: [
116
- {
117
- title: options.button_title,
118
- link: {
119
- mobileWebUrl: options.image_link_url,
182
+ try {
183
+ const KakaoSdk = window['Kakao'];
184
+ if (KakaoSdk && KakaoSdk.Link) {
185
+ // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음
186
+ const sendResult = KakaoSdk.Link.sendDefault({
187
+ objectType: 'feed',
188
+ content: {
189
+ title: options.title,
190
+ description: options.description,
191
+ imageUrl: options.image_url,
192
+ link: {
193
+ mobileWebUrl: options.image_link_url,
194
+ },
120
195
  },
121
- },
122
- ],
123
- callback: function () {
124
- resolve({ value: 'done' });
125
- },
126
- });
196
+ buttons: [
197
+ {
198
+ title: options.button_title,
199
+ link: {
200
+ mobileWebUrl: options.image_link_url,
201
+ },
202
+ },
203
+ ],
204
+ });
205
+ if (sendResult && typeof sendResult.then === 'function') {
206
+ // Promise 기반 API
207
+ sendResult
208
+ .then(() => {
209
+ resolve({ value: 'done' });
210
+ })
211
+ .catch((error) => {
212
+ console.error('Kakao Link Send Failed', error);
213
+ reject(error);
214
+ });
215
+ }
216
+ else {
217
+ // 콜백 방식 (하위 호환성)
218
+ if (typeof sendResult === 'object' && sendResult.callback) {
219
+ sendResult.callback = function () {
220
+ resolve({ value: 'done' });
221
+ };
222
+ }
223
+ else {
224
+ // 콜백이 없는 경우 직접 resolve
225
+ resolve({ value: 'done' });
226
+ }
227
+ }
228
+ }
229
+ else {
230
+ reject(new Error('Kakao SDK not initialized'));
231
+ }
232
+ }
233
+ catch (e) {
234
+ console.error('Error during Kakao link send', e);
235
+ reject(e);
236
+ }
127
237
  });
128
238
  }
129
239
  removeKakaoSdk() {
@@ -142,8 +252,10 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
142
252
  }
143
253
  const script = document.createElement('script');
144
254
  script.id = this.kakaoScriptId; // Set an ID to reference this script
145
- script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;
146
- script.crossOrigin = 'anonymous';
255
+ // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용
256
+ script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';
257
+ // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';
258
+ // script.crossOrigin = 'anonymous';
147
259
  script.onload = () => {
148
260
  console.log('Kakao SDK loaded');
149
261
  resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst Capacitor3KakaoLogin = registerPlugin('Capacitor3KakaoLogin', {\n web: () => import('./web').then(m => new m.Capacitor3KakaoLoginWeb()),\n});\nexport * from './definitions';\nexport { Capacitor3KakaoLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class Capacitor3KakaoLoginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n this.KAKAO_SDK_VERSION = '2.7.4';\n }\n initializeKakao(options) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n }\n catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n //웹 카카오 로그인\n kakaoLogin() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] !== 'undefined') {\n window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key\n }\n else {\n reject(new Error('Kakao undefined'));\n }\n try {\n window.Kakao.Auth.login({\n throughTalk: true,\n persistAccessToken: true,\n success: (response) => {\n console.log(response);\n resolve({\n value: response.access_token,\n });\n },\n fail: (error) => {\n console.error('Kakao Login Failed', error);\n reject(new Error('Kakao Login Failed'));\n },\n });\n }\n catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n //웹 로그아웃\n kakaoLogout() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.Auth.logout();\n resolve({ value: 'done' });\n });\n }\n //unlink\n kakaoUnlink() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n success: function (response) {\n console.log(response);\n resolve({ value: 'done' });\n },\n fail: function (error) {\n console.log(error);\n reject(error);\n },\n });\n });\n }\n //message\n sendLinkFeed(options) {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n callback: function () {\n resolve({ value: 'done' });\n },\n });\n });\n }\n removeKakaoSdk() {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n loadKakaoSdk() {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;\n script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst Capacitor3KakaoLogin = registerPlugin('Capacitor3KakaoLogin', {\n web: () => import('./web').then(m => new m.Capacitor3KakaoLoginWeb()),\n});\nexport * from './definitions';\nexport { Capacitor3KakaoLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class Capacitor3KakaoLoginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n }\n initializeKakao(options) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n }\n catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n //웹 카카오 로그인 (SDK 2.0 방식)\n kakaoLogin() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('Kakao undefined'));\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\n // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)\n window.Kakao.Auth.authorize({\n redirectUri: window.location.origin + '/kakao-login-callback',\n throughTalk: true,\n state: 'kakao_login_' + Date.now(),\n });\n // 리다이렉트가 발생하므로 Promise는 즉시 resolve\n // 실제 토큰은 handleKakaoCallback()에서 처리\n resolve({ value: 'redirected' });\n }\n catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n //리다이렉트 후 콜백 처리 (SDK 2.0 방식)\n handleKakaoCallback() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\n console.log('handleKakaoCallback!!');\n try {\n // URL 파라미터 확인\n const urlParams = new URLSearchParams(window.location.search);\n const code = urlParams.get('code');\n const error = urlParams.get('error');\n if (error) {\n // 에러 파라미터가 있는 경우\n window.history.replaceState({}, '', window.location.pathname);\n reject(new Error(`Kakao Login Failed: ${error}`));\n return;\n }\n if (!code) {\n // 인가 코드가 없는 경우 (리다이렉트 후가 아님)\n reject(new Error('No authorization code found. Please call kakaoLogin() first.'));\n return;\n }\n const accessToken = window.Kakao.Auth.getAccessToken();\n console.log('accessToken:', accessToken);\n if (accessToken) {\n // URL 파라미터 정리\n window.history.replaceState({}, '', window.location.pathname);\n resolve({ value: accessToken });\n }\n else {\n reject(new Error('Kakao Login Failed: Token exchange failed'));\n }\n }\n catch (e) {\n console.error('Error during Kakao callback handling', e);\n reject(e);\n }\n });\n }\n //웹 로그아웃 (SDK 2.0 방식)\n kakaoLogout() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Auth) {\n // SDK 2.0: logout()은 Promise를 반환할 수 있음\n const logoutResult = KakaoSdk.Auth.logout();\n if (logoutResult && typeof logoutResult.then === 'function') {\n logoutResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Logout Failed', error);\n reject(error);\n });\n }\n else {\n // 동기 방식으로 처리되는 경우\n resolve({ value: 'done' });\n }\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao logout', e);\n reject(e);\n }\n });\n }\n //unlink (SDK 2.0 방식)\n kakaoUnlink() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.API) {\n // SDK 2.0: request()는 Promise를 반환\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n })\n .then((response) => {\n console.log(response);\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Unlink Failed', error);\n reject(error);\n });\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao unlink', e);\n reject(e);\n }\n });\n }\n //message (SDK 2.0 방식)\n sendLinkFeed(options) {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Link) {\n // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음\n const sendResult = KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n });\n if (sendResult && typeof sendResult.then === 'function') {\n // Promise 기반 API\n sendResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Link Send Failed', error);\n reject(error);\n });\n }\n else {\n // 콜백 방식 (하위 호환성)\n if (typeof sendResult === 'object' && sendResult.callback) {\n sendResult.callback = function () {\n resolve({ value: 'done' });\n };\n }\n else {\n // 콜백이 없는 경우 직접 resolve\n resolve({ value: 'done' });\n }\n }\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao link send', e);\n reject(e);\n }\n });\n }\n removeKakaoSdk() {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n loadKakaoSdk() {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용\n script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';\n // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';\n // script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":";;;;;;AACK,MAAC,oBAAoB,GAAGA,mBAAc,CAAC,sBAAsB,EAAE;AACpE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,uBAAuB,EAAE,CAAC;AACzE,CAAC;;ACFM,MAAM,uBAAuB,SAASC,cAAS,CAAC;AACvD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;AAC5C,KAAK;AACL,IAAI,eAAe,CAAC,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAK;AACtD,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACnC,oBAAoB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACnD,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAK;AACtD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtC,gBAAgB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,gBAAgB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;AAC5D,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzD,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB;AACA,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChD;AACA,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,oBAAoB,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB;AACjF,oBAAoB,WAAW,EAAE,IAAI;AACrC,oBAAoB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;AACtD,iBAAiB,CAAC,CAAC;AACnB;AACA;AACA,gBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AAC7D,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAK;AACtD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,aAAa;AACb;AACA,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAY,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACjD,YAAY,IAAI;AAChB;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9E,gBAAgB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnD,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrD,gBAAgB,IAAI,KAAK,EAAE;AAC3B;AACA,oBAAoB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClF,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B;AACA,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC,CAAC;AACtG,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,gBAAgB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACzD,gBAAgB,IAAI,WAAW,EAAE;AACjC;AACA,oBAAoB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClF,oBAAoB,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AACpD,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;AACnF,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;AACzE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC/C;AACA,oBAAoB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChE,oBAAoB,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE;AACjF,wBAAwB,YAAY;AACpC,6BAA6B,IAAI,CAAC,MAAM;AACxC,4BAA4B,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACvD,yBAAyB,CAAC;AAC1B,6BAA6B,KAAK,CAAC,CAAC,KAAK,KAAK;AAC9C,4BAA4B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACxE,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,yBAAyB;AACzB;AACA,wBAAwB,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACnE,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;AAC9D,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE;AAC9C;AACA,oBAAoB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,wBAAwB,GAAG,EAAE,iBAAiB;AAC9C,qBAAqB,CAAC;AACtB,yBAAyB,IAAI,CAAC,CAAC,QAAQ,KAAK;AAC5C,wBAAwB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,wBAAwB,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,qBAAqB,CAAC;AACtB,yBAAyB,KAAK,CAAC,CAAC,KAAK,KAAK;AAC1C,wBAAwB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACpE,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC;AACtC,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACnE,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;AAC9D,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,YAAY,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/B,gBAAgB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACjD,gBAAgB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC/C;AACA,oBAAoB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AACjE,wBAAwB,UAAU,EAAE,MAAM;AAC1C,wBAAwB,OAAO,EAAE;AACjC,4BAA4B,KAAK,EAAE,OAAO,CAAC,KAAK;AAChD,4BAA4B,WAAW,EAAE,OAAO,CAAC,WAAW;AAC5D,4BAA4B,QAAQ,EAAE,OAAO,CAAC,SAAS;AACvD,4BAA4B,IAAI,EAAE;AAClC,gCAAgC,YAAY,EAAE,OAAO,CAAC,cAAc;AACpE,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,OAAO,EAAE;AACjC,4BAA4B;AAC5B,gCAAgC,KAAK,EAAE,OAAO,CAAC,YAAY;AAC3D,gCAAgC,IAAI,EAAE;AACtC,oCAAoC,YAAY,EAAE,OAAO,CAAC,cAAc;AACxE,iCAAiC;AACjC,6BAA6B;AAC7B,yBAAyB;AACzB,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7E;AACA,wBAAwB,UAAU;AAClC,6BAA6B,IAAI,CAAC,MAAM;AACxC,4BAA4B,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACvD,yBAAyB,CAAC;AAC1B,6BAA6B,KAAK,CAAC,CAAC,KAAK,KAAK;AAC9C,4BAA4B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC3E,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1C,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,yBAAyB;AACzB;AACA,wBAAwB,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE;AACnF,4BAA4B,UAAU,CAAC,QAAQ,GAAG,YAAY;AAC9D,gCAAgC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,6BAA6B,CAAC;AAC9B,yBAAyB;AACzB,6BAA6B;AAC7B;AACA,4BAA4B,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACvD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACnE,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACjE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9C,YAAY,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD;AACA,YAAY,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC7D,gBAAgB,OAAO,EAAE,CAAC;AAC1B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAC3C;AACA,YAAY,MAAM,CAAC,GAAG,GAAG,yDAAyD,CAAC;AACnF;AACA;AACA,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM;AAClC,gBAAgB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAChD,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC;AACd,YAAY,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACjF,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9C,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;;;;;;"}
package/dist/plugin.js CHANGED
@@ -9,7 +9,6 @@ var Capacitor3KakaoLogin = (function (exports, core) {
9
9
  constructor() {
10
10
  super(...arguments);
11
11
  this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script
12
- this.KAKAO_SDK_VERSION = '2.7.4';
13
12
  }
14
13
  initializeKakao(options) {
15
14
  return new Promise(async (resolve, reject) => {
@@ -25,35 +24,31 @@ var Capacitor3KakaoLogin = (function (exports, core) {
25
24
  }
26
25
  });
27
26
  }
28
- //웹 카카오 로그인
27
+ //웹 카카오 로그인 (SDK 2.0 방식)
29
28
  kakaoLogin() {
30
29
  return new Promise(async (resolve, reject) => {
31
30
  if (!this.web_key) {
32
31
  reject('kakao_sdk_not_initialzed');
33
- }
34
- this.removeKakaoSdk();
35
- await this.loadKakaoSdk();
36
- if (typeof window['Kakao'] !== 'undefined') {
37
- window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key
38
- }
39
- else {
40
- reject(new Error('Kakao undefined'));
32
+ return;
41
33
  }
42
34
  try {
43
- window.Kakao.Auth.login({
35
+ this.removeKakaoSdk();
36
+ await this.loadKakaoSdk();
37
+ if (typeof window['Kakao'] === 'undefined') {
38
+ reject(new Error('Kakao undefined'));
39
+ return;
40
+ }
41
+ // SDK 2.0 초기화
42
+ window.Kakao.init(this.web_key);
43
+ // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
44
+ window.Kakao.Auth.authorize({
45
+ redirectUri: window.location.origin + '/kakao-login-callback',
44
46
  throughTalk: true,
45
- persistAccessToken: true,
46
- success: (response) => {
47
- console.log(response);
48
- resolve({
49
- value: response.access_token,
50
- });
51
- },
52
- fail: (error) => {
53
- console.error('Kakao Login Failed', error);
54
- reject(new Error('Kakao Login Failed'));
55
- },
47
+ state: 'kakao_login_' + Date.now(),
56
48
  });
49
+ // 리다이렉트가 발생하므로 Promise는 즉시 resolve
50
+ // 실제 토큰은 handleKakaoCallback()에서 처리
51
+ resolve({ value: 'redirected' });
57
52
  }
58
53
  catch (e) {
59
54
  console.error('Error during Kakao login', e);
@@ -61,66 +56,181 @@ var Capacitor3KakaoLogin = (function (exports, core) {
61
56
  }
62
57
  });
63
58
  }
64
- //웹 로그아웃
59
+ //리다이렉트 후 콜백 처리 (SDK 2.0 방식)
60
+ handleKakaoCallback() {
61
+ return new Promise(async (resolve, reject) => {
62
+ if (!this.web_key) {
63
+ reject('kakao_sdk_not_initialzed');
64
+ return;
65
+ }
66
+ // SDK 2.0 초기화
67
+ window.Kakao.init(this.web_key);
68
+ console.log('handleKakaoCallback!!');
69
+ try {
70
+ // URL 파라미터 확인
71
+ const urlParams = new URLSearchParams(window.location.search);
72
+ const code = urlParams.get('code');
73
+ const error = urlParams.get('error');
74
+ if (error) {
75
+ // 에러 파라미터가 있는 경우
76
+ window.history.replaceState({}, '', window.location.pathname);
77
+ reject(new Error(`Kakao Login Failed: ${error}`));
78
+ return;
79
+ }
80
+ if (!code) {
81
+ // 인가 코드가 없는 경우 (리다이렉트 후가 아님)
82
+ reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
83
+ return;
84
+ }
85
+ const accessToken = window.Kakao.Auth.getAccessToken();
86
+ console.log('accessToken:', accessToken);
87
+ if (accessToken) {
88
+ // URL 파라미터 정리
89
+ window.history.replaceState({}, '', window.location.pathname);
90
+ resolve({ value: accessToken });
91
+ }
92
+ else {
93
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
94
+ }
95
+ }
96
+ catch (e) {
97
+ console.error('Error during Kakao callback handling', e);
98
+ reject(e);
99
+ }
100
+ });
101
+ }
102
+ //웹 로그아웃 (SDK 2.0 방식)
65
103
  kakaoLogout() {
66
104
  return new Promise((resolve, reject) => {
67
105
  if (!this.web_key) {
68
106
  reject('kakao_sdk_not_initialzed');
107
+ return;
108
+ }
109
+ try {
110
+ const KakaoSdk = window['Kakao'];
111
+ if (KakaoSdk && KakaoSdk.Auth) {
112
+ // SDK 2.0: logout()은 Promise를 반환할 수 있음
113
+ const logoutResult = KakaoSdk.Auth.logout();
114
+ if (logoutResult && typeof logoutResult.then === 'function') {
115
+ logoutResult
116
+ .then(() => {
117
+ resolve({ value: 'done' });
118
+ })
119
+ .catch((error) => {
120
+ console.error('Kakao Logout Failed', error);
121
+ reject(error);
122
+ });
123
+ }
124
+ else {
125
+ // 동기 방식으로 처리되는 경우
126
+ resolve({ value: 'done' });
127
+ }
128
+ }
129
+ else {
130
+ reject(new Error('Kakao SDK not initialized'));
131
+ }
132
+ }
133
+ catch (e) {
134
+ console.error('Error during Kakao logout', e);
135
+ reject(e);
69
136
  }
70
- const KakaoSdk = window['Kakao'];
71
- KakaoSdk.Auth.logout();
72
- resolve({ value: 'done' });
73
137
  });
74
138
  }
75
- //unlink
139
+ //unlink (SDK 2.0 방식)
76
140
  kakaoUnlink() {
77
141
  return new Promise((resolve, reject) => {
78
142
  if (!this.web_key) {
79
143
  reject('kakao_sdk_not_initialzed');
144
+ return;
145
+ }
146
+ try {
147
+ const KakaoSdk = window['Kakao'];
148
+ if (KakaoSdk && KakaoSdk.API) {
149
+ // SDK 2.0: request()는 Promise를 반환
150
+ KakaoSdk.API.request({
151
+ url: '/v1/user/unlink',
152
+ })
153
+ .then((response) => {
154
+ console.log(response);
155
+ resolve({ value: 'done' });
156
+ })
157
+ .catch((error) => {
158
+ console.error('Kakao Unlink Failed', error);
159
+ reject(error);
160
+ });
161
+ }
162
+ else {
163
+ reject(new Error('Kakao SDK not initialized'));
164
+ }
165
+ }
166
+ catch (e) {
167
+ console.error('Error during Kakao unlink', e);
168
+ reject(e);
80
169
  }
81
- const KakaoSdk = window['Kakao'];
82
- KakaoSdk.API.request({
83
- url: '/v1/user/unlink',
84
- success: function (response) {
85
- console.log(response);
86
- resolve({ value: 'done' });
87
- },
88
- fail: function (error) {
89
- console.log(error);
90
- reject(error);
91
- },
92
- });
93
170
  });
94
171
  }
95
- //message
172
+ //message (SDK 2.0 방식)
96
173
  sendLinkFeed(options) {
97
174
  return new Promise((resolve, reject) => {
98
175
  if (!this.web_key) {
99
176
  reject('kakao_sdk_not_initialzed');
177
+ return;
100
178
  }
101
- const KakaoSdk = window['Kakao'];
102
- KakaoSdk.Link.sendDefault({
103
- objectType: 'feed',
104
- content: {
105
- title: options.title,
106
- description: options.description,
107
- imageUrl: options.image_url,
108
- link: {
109
- mobileWebUrl: options.image_link_url,
110
- },
111
- },
112
- buttons: [
113
- {
114
- title: options.button_title,
115
- link: {
116
- mobileWebUrl: options.image_link_url,
179
+ try {
180
+ const KakaoSdk = window['Kakao'];
181
+ if (KakaoSdk && KakaoSdk.Link) {
182
+ // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음
183
+ const sendResult = KakaoSdk.Link.sendDefault({
184
+ objectType: 'feed',
185
+ content: {
186
+ title: options.title,
187
+ description: options.description,
188
+ imageUrl: options.image_url,
189
+ link: {
190
+ mobileWebUrl: options.image_link_url,
191
+ },
117
192
  },
118
- },
119
- ],
120
- callback: function () {
121
- resolve({ value: 'done' });
122
- },
123
- });
193
+ buttons: [
194
+ {
195
+ title: options.button_title,
196
+ link: {
197
+ mobileWebUrl: options.image_link_url,
198
+ },
199
+ },
200
+ ],
201
+ });
202
+ if (sendResult && typeof sendResult.then === 'function') {
203
+ // Promise 기반 API
204
+ sendResult
205
+ .then(() => {
206
+ resolve({ value: 'done' });
207
+ })
208
+ .catch((error) => {
209
+ console.error('Kakao Link Send Failed', error);
210
+ reject(error);
211
+ });
212
+ }
213
+ else {
214
+ // 콜백 방식 (하위 호환성)
215
+ if (typeof sendResult === 'object' && sendResult.callback) {
216
+ sendResult.callback = function () {
217
+ resolve({ value: 'done' });
218
+ };
219
+ }
220
+ else {
221
+ // 콜백이 없는 경우 직접 resolve
222
+ resolve({ value: 'done' });
223
+ }
224
+ }
225
+ }
226
+ else {
227
+ reject(new Error('Kakao SDK not initialized'));
228
+ }
229
+ }
230
+ catch (e) {
231
+ console.error('Error during Kakao link send', e);
232
+ reject(e);
233
+ }
124
234
  });
125
235
  }
126
236
  removeKakaoSdk() {
@@ -139,8 +249,10 @@ var Capacitor3KakaoLogin = (function (exports, core) {
139
249
  }
140
250
  const script = document.createElement('script');
141
251
  script.id = this.kakaoScriptId; // Set an ID to reference this script
142
- script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;
143
- script.crossOrigin = 'anonymous';
252
+ // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용
253
+ script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';
254
+ // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';
255
+ // script.crossOrigin = 'anonymous';
144
256
  script.onload = () => {
145
257
  console.log('Kakao SDK loaded');
146
258
  resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst Capacitor3KakaoLogin = registerPlugin('Capacitor3KakaoLogin', {\n web: () => import('./web').then(m => new m.Capacitor3KakaoLoginWeb()),\n});\nexport * from './definitions';\nexport { Capacitor3KakaoLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class Capacitor3KakaoLoginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n this.KAKAO_SDK_VERSION = '2.7.4';\n }\n initializeKakao(options) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n }\n catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n //웹 카카오 로그인\n kakaoLogin() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] !== 'undefined') {\n window['Kakao'].init(this.web_key); // Initialize Kakao with your JavaScript key\n }\n else {\n reject(new Error('Kakao undefined'));\n }\n try {\n window.Kakao.Auth.login({\n throughTalk: true,\n persistAccessToken: true,\n success: (response) => {\n console.log(response);\n resolve({\n value: response.access_token,\n });\n },\n fail: (error) => {\n console.error('Kakao Login Failed', error);\n reject(new Error('Kakao Login Failed'));\n },\n });\n }\n catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n //웹 로그아웃\n kakaoLogout() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.Auth.logout();\n resolve({ value: 'done' });\n });\n }\n //unlink\n kakaoUnlink() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n success: function (response) {\n console.log(response);\n resolve({ value: 'done' });\n },\n fail: function (error) {\n console.log(error);\n reject(error);\n },\n });\n });\n }\n //message\n sendLinkFeed(options) {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n }\n const KakaoSdk = window['Kakao'];\n KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n callback: function () {\n resolve({ value: 'done' });\n },\n });\n });\n }\n removeKakaoSdk() {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n loadKakaoSdk() {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n script.src = `https://t1.kakaocdn.net/kakao_js_sdk/${this.KAKAO_SDK_VERSION}/kakao.min.js`;\n script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst Capacitor3KakaoLogin = registerPlugin('Capacitor3KakaoLogin', {\n web: () => import('./web').then(m => new m.Capacitor3KakaoLoginWeb()),\n});\nexport * from './definitions';\nexport { Capacitor3KakaoLogin };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class Capacitor3KakaoLoginWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.kakaoScriptId = 'kakao-js-sdk'; // Unique ID for the Kakao SDK script\n }\n initializeKakao(options) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!this.web_key) {\n this.web_key = options.web_key;\n }\n resolve({ value: 'done' });\n }\n catch (error) {\n console.error(error);\n reject(error);\n }\n });\n }\n //웹 카카오 로그인 (SDK 2.0 방식)\n kakaoLogin() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('Kakao undefined'));\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\n // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)\n window.Kakao.Auth.authorize({\n redirectUri: window.location.origin + '/kakao-login-callback',\n throughTalk: true,\n state: 'kakao_login_' + Date.now(),\n });\n // 리다이렉트가 발생하므로 Promise는 즉시 resolve\n // 실제 토큰은 handleKakaoCallback()에서 처리\n resolve({ value: 'redirected' });\n }\n catch (e) {\n console.error('Error during Kakao login', e);\n reject(e);\n }\n });\n }\n //리다이렉트 후 콜백 처리 (SDK 2.0 방식)\n handleKakaoCallback() {\n return new Promise(async (resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\n console.log('handleKakaoCallback!!');\n try {\n // URL 파라미터 확인\n const urlParams = new URLSearchParams(window.location.search);\n const code = urlParams.get('code');\n const error = urlParams.get('error');\n if (error) {\n // 에러 파라미터가 있는 경우\n window.history.replaceState({}, '', window.location.pathname);\n reject(new Error(`Kakao Login Failed: ${error}`));\n return;\n }\n if (!code) {\n // 인가 코드가 없는 경우 (리다이렉트 후가 아님)\n reject(new Error('No authorization code found. Please call kakaoLogin() first.'));\n return;\n }\n const accessToken = window.Kakao.Auth.getAccessToken();\n console.log('accessToken:', accessToken);\n if (accessToken) {\n // URL 파라미터 정리\n window.history.replaceState({}, '', window.location.pathname);\n resolve({ value: accessToken });\n }\n else {\n reject(new Error('Kakao Login Failed: Token exchange failed'));\n }\n }\n catch (e) {\n console.error('Error during Kakao callback handling', e);\n reject(e);\n }\n });\n }\n //웹 로그아웃 (SDK 2.0 방식)\n kakaoLogout() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Auth) {\n // SDK 2.0: logout()은 Promise를 반환할 수 있음\n const logoutResult = KakaoSdk.Auth.logout();\n if (logoutResult && typeof logoutResult.then === 'function') {\n logoutResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Logout Failed', error);\n reject(error);\n });\n }\n else {\n // 동기 방식으로 처리되는 경우\n resolve({ value: 'done' });\n }\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao logout', e);\n reject(e);\n }\n });\n }\n //unlink (SDK 2.0 방식)\n kakaoUnlink() {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.API) {\n // SDK 2.0: request()는 Promise를 반환\n KakaoSdk.API.request({\n url: '/v1/user/unlink',\n })\n .then((response) => {\n console.log(response);\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Unlink Failed', error);\n reject(error);\n });\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao unlink', e);\n reject(e);\n }\n });\n }\n //message (SDK 2.0 방식)\n sendLinkFeed(options) {\n return new Promise((resolve, reject) => {\n if (!this.web_key) {\n reject('kakao_sdk_not_initialzed');\n return;\n }\n try {\n const KakaoSdk = window['Kakao'];\n if (KakaoSdk && KakaoSdk.Link) {\n // SDK 2.0: sendDefault()는 Promise를 반환할 수 있음\n const sendResult = KakaoSdk.Link.sendDefault({\n objectType: 'feed',\n content: {\n title: options.title,\n description: options.description,\n imageUrl: options.image_url,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n buttons: [\n {\n title: options.button_title,\n link: {\n mobileWebUrl: options.image_link_url,\n },\n },\n ],\n });\n if (sendResult && typeof sendResult.then === 'function') {\n // Promise 기반 API\n sendResult\n .then(() => {\n resolve({ value: 'done' });\n })\n .catch((error) => {\n console.error('Kakao Link Send Failed', error);\n reject(error);\n });\n }\n else {\n // 콜백 방식 (하위 호환성)\n if (typeof sendResult === 'object' && sendResult.callback) {\n sendResult.callback = function () {\n resolve({ value: 'done' });\n };\n }\n else {\n // 콜백이 없는 경우 직접 resolve\n resolve({ value: 'done' });\n }\n }\n }\n else {\n reject(new Error('Kakao SDK not initialized'));\n }\n }\n catch (e) {\n console.error('Error during Kakao link send', e);\n reject(e);\n }\n });\n }\n removeKakaoSdk() {\n const script = document.getElementById(this.kakaoScriptId);\n if (script) {\n document.head.removeChild(script); // Remove the script from the DOM\n console.log('Kakao SDK removed');\n }\n }\n loadKakaoSdk() {\n return new Promise((resolve, reject) => {\n // Check if the script is already loaded\n if (document.getElementById(this.kakaoScriptId)) {\n resolve();\n return;\n }\n const script = document.createElement('script');\n script.id = this.kakaoScriptId; // Set an ID to reference this script\n // SDK 2.x - Kakao.Auth.authorize() 리다이렉트 방식 사용\n script.src = 'https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js';\n // script.integrity = 'sha384-DKYJZ8NLiK8MN4/C5P2dtSmLQ4KwPaoqAfyA/DfmEc1VDxu4yyC7wy6K1Hs90nka';\n // script.crossOrigin = 'anonymous';\n script.onload = () => {\n console.log('Kakao SDK loaded');\n resolve();\n };\n script.onerror = () => reject(new Error('Failed to load Kakao SDK'));\n document.head.appendChild(script);\n });\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capacitor3-kakao-login",
3
- "version": "0.8.2",
3
+ "version": "0.8.4",
4
4
  "description": "kakao login for capacitor8",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",