capacitor3-kakao-login 0.8.4 → 0.8.5

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/dist/esm/web.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { WebPlugin } from '@capacitor/core';
2
+ import type { Capacitor3KakaoLoginPlugin } from './definitions';
2
3
  declare global {
3
4
  interface Window {
4
5
  Kakao: any;
5
6
  }
6
7
  }
7
- export declare class Capacitor3KakaoLoginWeb extends WebPlugin implements Capacitor3KakaoLoginWeb {
8
+ export declare class Capacitor3KakaoLoginWeb extends WebPlugin implements Capacitor3KakaoLoginPlugin {
8
9
  private kakaoScriptId;
9
10
  web_key: any;
10
11
  initializeKakao(options: {
@@ -34,6 +35,7 @@ export declare class Capacitor3KakaoLoginWeb extends WebPlugin implements Capaci
34
35
  }): Promise<{
35
36
  value: string;
36
37
  }>;
38
+ private getAccessTokenFromCode;
37
39
  private removeKakaoSdk;
38
40
  private loadKakaoSdk;
39
41
  }
package/dist/esm/web.js CHANGED
@@ -36,7 +36,7 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
36
36
  window.Kakao.init(this.web_key);
37
37
  // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
38
38
  window.Kakao.Auth.authorize({
39
- redirectUri: window.location.origin + '/kakao-login-callback',
39
+ redirectUri: window.location.origin + '/login-kakao-callback',
40
40
  throughTalk: true,
41
41
  state: 'kakao_login_' + Date.now(),
42
42
  });
@@ -57,17 +57,20 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
57
57
  reject('kakao_sdk_not_initialzed');
58
58
  return;
59
59
  }
60
- // SDK 2.0 초기화
61
- window.Kakao.init(this.web_key);
62
- console.log('handleKakaoCallback!!');
63
60
  try {
61
+ this.removeKakaoSdk();
62
+ await this.loadKakaoSdk();
63
+ if (typeof window['Kakao'] === 'undefined') {
64
+ reject(new Error('handleKakaoCallback Kakao undefined'));
65
+ return;
66
+ }
67
+ // SDK 2.0 초기화
68
+ window.Kakao.init(this.web_key);
64
69
  // URL 파라미터 확인
65
70
  const urlParams = new URLSearchParams(window.location.search);
66
71
  const code = urlParams.get('code');
67
72
  const error = urlParams.get('error');
68
73
  if (error) {
69
- // 에러 파라미터가 있는 경우
70
- window.history.replaceState({}, '', window.location.pathname);
71
74
  reject(new Error(`Kakao Login Failed: ${error}`));
72
75
  return;
73
76
  }
@@ -76,14 +79,20 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
76
79
  reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
77
80
  return;
78
81
  }
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 });
82
+ // REST API를 통해 access token 획득
83
+ try {
84
+ const accessToken = await this.getAccessTokenFromCode(code);
85
+ if (accessToken) {
86
+ // URL 파라미터 정리
87
+ window.history.replaceState({}, '', window.location.pathname);
88
+ resolve({ value: accessToken });
89
+ }
90
+ else {
91
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
92
+ }
85
93
  }
86
- else {
94
+ catch (tokenError) {
95
+ console.error('Error getting access token:', tokenError);
87
96
  reject(new Error('Kakao Login Failed: Token exchange failed'));
88
97
  }
89
98
  }
@@ -227,6 +236,37 @@ export class Capacitor3KakaoLoginWeb extends WebPlugin {
227
236
  }
228
237
  });
229
238
  }
239
+ async getAccessTokenFromCode(code) {
240
+ const tokenUrl = 'https://kauth.kakao.com/oauth/token';
241
+ const redirectUri = window.location.origin + '/login-kakao-callback';
242
+ const params = new URLSearchParams({
243
+ grant_type: 'authorization_code',
244
+ client_id: this.web_key,
245
+ redirect_uri: redirectUri,
246
+ code: code,
247
+ });
248
+ try {
249
+ const response = await fetch(tokenUrl, {
250
+ method: 'POST',
251
+ headers: {
252
+ 'Content-Type': 'application/x-www-form-urlencoded',
253
+ },
254
+ body: params.toString(),
255
+ });
256
+ if (!response.ok) {
257
+ throw new Error(`HTTP error! status: ${response.status}`);
258
+ }
259
+ const tokenData = await response.json();
260
+ if (tokenData.error) {
261
+ throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);
262
+ }
263
+ return tokenData.access_token;
264
+ }
265
+ catch (error) {
266
+ console.error('Error exchanging code for token:', error);
267
+ throw error;
268
+ }
269
+ }
230
270
  removeKakaoSdk() {
231
271
  const script = document.getElementById(this.kakaoScriptId);
232
272
  if (script) {
@@ -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 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"]}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\nimport type { Capacitor3KakaoLoginPlugin } from './definitions';\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 Capacitor3KakaoLoginPlugin\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 + '/login-kakao-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 try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('handleKakaoCallback Kakao undefined'));\n return;\n }\n // SDK 2.0 초기화\n window.Kakao!.init(this.web_key);\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 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 // REST API를 통해 access token 획득\n try {\n\n const accessToken = await this.getAccessTokenFromCode(code);\n \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 (tokenError) {\n console.error('Error getting access token:', tokenError);\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 async getAccessTokenFromCode(code: string): Promise<string> {\n const tokenUrl = 'https://kauth.kakao.com/oauth/token';\n const redirectUri = window.location.origin + '/login-kakao-callback';\n \n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: this.web_key,\n redirect_uri: redirectUri,\n code: code,\n });\n\n try {\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const tokenData = await response.json();\n \n if (tokenData.error) {\n throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);\n }\n\n return tokenData.access_token;\n } catch (error) {\n console.error('Error exchanging code for token:', error);\n throw error;\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"]}
@@ -45,7 +45,7 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
45
45
  window.Kakao.init(this.web_key);
46
46
  // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
47
47
  window.Kakao.Auth.authorize({
48
- redirectUri: window.location.origin + '/kakao-login-callback',
48
+ redirectUri: window.location.origin + '/login-kakao-callback',
49
49
  throughTalk: true,
50
50
  state: 'kakao_login_' + Date.now(),
51
51
  });
@@ -66,17 +66,20 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
66
66
  reject('kakao_sdk_not_initialzed');
67
67
  return;
68
68
  }
69
- // SDK 2.0 초기화
70
- window.Kakao.init(this.web_key);
71
- console.log('handleKakaoCallback!!');
72
69
  try {
70
+ this.removeKakaoSdk();
71
+ await this.loadKakaoSdk();
72
+ if (typeof window['Kakao'] === 'undefined') {
73
+ reject(new Error('handleKakaoCallback Kakao undefined'));
74
+ return;
75
+ }
76
+ // SDK 2.0 초기화
77
+ window.Kakao.init(this.web_key);
73
78
  // URL 파라미터 확인
74
79
  const urlParams = new URLSearchParams(window.location.search);
75
80
  const code = urlParams.get('code');
76
81
  const error = urlParams.get('error');
77
82
  if (error) {
78
- // 에러 파라미터가 있는 경우
79
- window.history.replaceState({}, '', window.location.pathname);
80
83
  reject(new Error(`Kakao Login Failed: ${error}`));
81
84
  return;
82
85
  }
@@ -85,14 +88,20 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
85
88
  reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
86
89
  return;
87
90
  }
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 });
91
+ // REST API를 통해 access token 획득
92
+ try {
93
+ const accessToken = await this.getAccessTokenFromCode(code);
94
+ if (accessToken) {
95
+ // URL 파라미터 정리
96
+ window.history.replaceState({}, '', window.location.pathname);
97
+ resolve({ value: accessToken });
98
+ }
99
+ else {
100
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
101
+ }
94
102
  }
95
- else {
103
+ catch (tokenError) {
104
+ console.error('Error getting access token:', tokenError);
96
105
  reject(new Error('Kakao Login Failed: Token exchange failed'));
97
106
  }
98
107
  }
@@ -236,6 +245,37 @@ class Capacitor3KakaoLoginWeb extends core.WebPlugin {
236
245
  }
237
246
  });
238
247
  }
248
+ async getAccessTokenFromCode(code) {
249
+ const tokenUrl = 'https://kauth.kakao.com/oauth/token';
250
+ const redirectUri = window.location.origin + '/login-kakao-callback';
251
+ const params = new URLSearchParams({
252
+ grant_type: 'authorization_code',
253
+ client_id: this.web_key,
254
+ redirect_uri: redirectUri,
255
+ code: code,
256
+ });
257
+ try {
258
+ const response = await fetch(tokenUrl, {
259
+ method: 'POST',
260
+ headers: {
261
+ 'Content-Type': 'application/x-www-form-urlencoded',
262
+ },
263
+ body: params.toString(),
264
+ });
265
+ if (!response.ok) {
266
+ throw new Error(`HTTP error! status: ${response.status}`);
267
+ }
268
+ const tokenData = await response.json();
269
+ if (tokenData.error) {
270
+ throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);
271
+ }
272
+ return tokenData.access_token;
273
+ }
274
+ catch (error) {
275
+ console.error('Error exchanging code for token:', error);
276
+ throw error;
277
+ }
278
+ }
239
279
  removeKakaoSdk() {
240
280
  const script = document.getElementById(this.kakaoScriptId);
241
281
  if (script) {
@@ -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 }\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;;;;;;;;;"}
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 + '/login-kakao-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 try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('handleKakaoCallback Kakao undefined'));\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\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 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 // REST API를 통해 access token 획득\n try {\n const accessToken = await this.getAccessTokenFromCode(code);\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 (tokenError) {\n console.error('Error getting access token:', tokenError);\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 async getAccessTokenFromCode(code) {\n const tokenUrl = 'https://kauth.kakao.com/oauth/token';\n const redirectUri = window.location.origin + '/login-kakao-callback';\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: this.web_key,\n redirect_uri: redirectUri,\n code: code,\n });\n try {\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const tokenData = await response.json();\n if (tokenData.error) {\n throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);\n }\n return tokenData.access_token;\n }\n catch (error) {\n console.error('Error exchanging code for token:', error);\n throw error;\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/dist/plugin.js CHANGED
@@ -42,7 +42,7 @@ var Capacitor3KakaoLogin = (function (exports, core) {
42
42
  window.Kakao.init(this.web_key);
43
43
  // SDK 2.0: authorize() 메서드 사용 (리다이렉트 방식)
44
44
  window.Kakao.Auth.authorize({
45
- redirectUri: window.location.origin + '/kakao-login-callback',
45
+ redirectUri: window.location.origin + '/login-kakao-callback',
46
46
  throughTalk: true,
47
47
  state: 'kakao_login_' + Date.now(),
48
48
  });
@@ -63,17 +63,20 @@ var Capacitor3KakaoLogin = (function (exports, core) {
63
63
  reject('kakao_sdk_not_initialzed');
64
64
  return;
65
65
  }
66
- // SDK 2.0 초기화
67
- window.Kakao.init(this.web_key);
68
- console.log('handleKakaoCallback!!');
69
66
  try {
67
+ this.removeKakaoSdk();
68
+ await this.loadKakaoSdk();
69
+ if (typeof window['Kakao'] === 'undefined') {
70
+ reject(new Error('handleKakaoCallback Kakao undefined'));
71
+ return;
72
+ }
73
+ // SDK 2.0 초기화
74
+ window.Kakao.init(this.web_key);
70
75
  // URL 파라미터 확인
71
76
  const urlParams = new URLSearchParams(window.location.search);
72
77
  const code = urlParams.get('code');
73
78
  const error = urlParams.get('error');
74
79
  if (error) {
75
- // 에러 파라미터가 있는 경우
76
- window.history.replaceState({}, '', window.location.pathname);
77
80
  reject(new Error(`Kakao Login Failed: ${error}`));
78
81
  return;
79
82
  }
@@ -82,14 +85,20 @@ var Capacitor3KakaoLogin = (function (exports, core) {
82
85
  reject(new Error('No authorization code found. Please call kakaoLogin() first.'));
83
86
  return;
84
87
  }
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 });
88
+ // REST API를 통해 access token 획득
89
+ try {
90
+ const accessToken = await this.getAccessTokenFromCode(code);
91
+ if (accessToken) {
92
+ // URL 파라미터 정리
93
+ window.history.replaceState({}, '', window.location.pathname);
94
+ resolve({ value: accessToken });
95
+ }
96
+ else {
97
+ reject(new Error('Kakao Login Failed: Token exchange failed'));
98
+ }
91
99
  }
92
- else {
100
+ catch (tokenError) {
101
+ console.error('Error getting access token:', tokenError);
93
102
  reject(new Error('Kakao Login Failed: Token exchange failed'));
94
103
  }
95
104
  }
@@ -233,6 +242,37 @@ var Capacitor3KakaoLogin = (function (exports, core) {
233
242
  }
234
243
  });
235
244
  }
245
+ async getAccessTokenFromCode(code) {
246
+ const tokenUrl = 'https://kauth.kakao.com/oauth/token';
247
+ const redirectUri = window.location.origin + '/login-kakao-callback';
248
+ const params = new URLSearchParams({
249
+ grant_type: 'authorization_code',
250
+ client_id: this.web_key,
251
+ redirect_uri: redirectUri,
252
+ code: code,
253
+ });
254
+ try {
255
+ const response = await fetch(tokenUrl, {
256
+ method: 'POST',
257
+ headers: {
258
+ 'Content-Type': 'application/x-www-form-urlencoded',
259
+ },
260
+ body: params.toString(),
261
+ });
262
+ if (!response.ok) {
263
+ throw new Error(`HTTP error! status: ${response.status}`);
264
+ }
265
+ const tokenData = await response.json();
266
+ if (tokenData.error) {
267
+ throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);
268
+ }
269
+ return tokenData.access_token;
270
+ }
271
+ catch (error) {
272
+ console.error('Error exchanging code for token:', error);
273
+ throw error;
274
+ }
275
+ }
236
276
  removeKakaoSdk() {
237
277
  const script = document.getElementById(this.kakaoScriptId);
238
278
  if (script) {
@@ -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 }\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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"}
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 + '/login-kakao-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 try {\n this.removeKakaoSdk();\n await this.loadKakaoSdk();\n if (typeof window['Kakao'] === 'undefined') {\n reject(new Error('handleKakaoCallback Kakao undefined'));\n return;\n }\n // SDK 2.0 초기화\n window.Kakao.init(this.web_key);\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 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 // REST API를 통해 access token 획득\n try {\n const accessToken = await this.getAccessTokenFromCode(code);\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 (tokenError) {\n console.error('Error getting access token:', tokenError);\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 async getAccessTokenFromCode(code) {\n const tokenUrl = 'https://kauth.kakao.com/oauth/token';\n const redirectUri = window.location.origin + '/login-kakao-callback';\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n client_id: this.web_key,\n redirect_uri: redirectUri,\n code: code,\n });\n try {\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: params.toString(),\n });\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const tokenData = await response.json();\n if (tokenData.error) {\n throw new Error(`Kakao token error: ${tokenData.error_description || tokenData.error}`);\n }\n return tokenData.access_token;\n }\n catch (error) {\n console.error('Error exchanging code for token:', error);\n throw error;\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.4",
3
+ "version": "0.8.5",
4
4
  "description": "kakao login for capacitor8",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",