@react-native-kakao/user 3.0.0 → 3.1.0-next.1
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/CHANGELOG.md +50 -0
- package/android/src/main/java/net/mjstudio/rnkakao/user/RNCKakaoUserModule.kt +415 -183
- package/ios/RNCKakaoUser.mm +83 -11
- package/ios/RNCKakaoUserManager.swift +286 -55
- package/lib/commonjs/index.js +96 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +251 -51
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/spec/NativeKakaoUser.ts +33 -3
- package/lib/commonjs/validateShippingAddressOptions.js +20 -0
- package/lib/commonjs/validateShippingAddressOptions.js.map +1 -0
- package/lib/module/index.js +88 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +243 -49
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/spec/NativeKakaoUser.ts +33 -3
- package/lib/module/validateShippingAddressOptions.js +16 -0
- package/lib/module/validateShippingAddressOptions.js.map +1 -0
- package/lib/typescript/src/index.d.ts +77 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/spec/NativeKakaoUser.d.ts +14 -5
- package/lib/typescript/src/spec/NativeKakaoUser.d.ts.map +1 -1
- package/lib/typescript/src/validateShippingAddressOptions.d.ts +6 -0
- package/lib/typescript/src/validateShippingAddressOptions.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/index.ts +195 -8
- package/src/index.web.ts +292 -70
- package/src/spec/NativeKakaoUser.ts +33 -3
- package/src/validateShippingAddressOptions.ts +30 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { TurboModule } from 'react-native';
|
|
2
2
|
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
|
|
3
4
|
|
|
4
5
|
import type {
|
|
5
6
|
KakaoAccessTokenInfo,
|
|
6
7
|
KakaoLoginToken,
|
|
8
|
+
KakaoRevokedServiceTerms,
|
|
7
9
|
KakaoScopeInfo,
|
|
8
10
|
KakaoServiceTerms,
|
|
9
11
|
KakaoShippingAddressResult,
|
|
@@ -18,15 +20,43 @@ export interface Spec extends TurboModule {
|
|
|
18
20
|
useKakaoAccountLogin: boolean,
|
|
19
21
|
scopes?: string[],
|
|
20
22
|
nonce?: string,
|
|
23
|
+
loginHint?: string,
|
|
24
|
+
channelPublicIds?: string[],
|
|
25
|
+
androidRequestCode?: number,
|
|
21
26
|
): Promise<KakaoLoginToken>;
|
|
27
|
+
loginWithKakao(
|
|
28
|
+
uiMode: string,
|
|
29
|
+
orientation: string,
|
|
30
|
+
launchMethod: string,
|
|
31
|
+
prompts: string[],
|
|
32
|
+
loginHint?: string,
|
|
33
|
+
nonce?: string,
|
|
34
|
+
channelPublicIds?: string[],
|
|
35
|
+
serviceTerms?: string[],
|
|
36
|
+
): Promise<KakaoLoginToken>;
|
|
37
|
+
issueAccessTokenWithCode(
|
|
38
|
+
code: string,
|
|
39
|
+
codeVerifier?: string,
|
|
40
|
+
redirectUri?: string,
|
|
41
|
+
): Promise<KakaoLoginToken>;
|
|
42
|
+
refreshToken(token?: UnsafeObject, iosLoggingEnabled?: boolean): Promise<KakaoLoginToken>;
|
|
43
|
+
signup(properties?: UnsafeObject): Promise<void>;
|
|
22
44
|
logout(): Promise<void>;
|
|
23
45
|
unlink(): Promise<void>;
|
|
24
46
|
isLogined(): Promise<boolean>;
|
|
47
|
+
hasToken(): Promise<boolean>;
|
|
25
48
|
scopes(scopes?: string[]): Promise<KakaoScopeInfo[]>;
|
|
26
49
|
revokeScopes(scopes: string[]): Promise<void>;
|
|
27
|
-
serviceTerms(): Promise<KakaoServiceTerms[]>;
|
|
28
|
-
|
|
29
|
-
|
|
50
|
+
serviceTerms(result?: string, tags?: string[]): Promise<KakaoServiceTerms[]>;
|
|
51
|
+
revokeServiceTerms(tags: string[]): Promise<KakaoRevokedServiceTerms[]>;
|
|
52
|
+
shippingAddresses(
|
|
53
|
+
addressId?: number,
|
|
54
|
+
fromUpdatedAt?: number,
|
|
55
|
+
pageSize?: number,
|
|
56
|
+
): Promise<KakaoShippingAddressResult>;
|
|
57
|
+
selectShippingAddress(): Promise<number>;
|
|
58
|
+
me(secureResource?: boolean): Promise<KakaoUser>;
|
|
59
|
+
updateProfile(properties: UnsafeObject): Promise<void>;
|
|
30
60
|
getAccessToken(): Promise<KakaoAccessTokenInfo>;
|
|
31
61
|
}
|
|
32
62
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateShippingAddressOptions = validateShippingAddressOptions;
|
|
7
|
+
var _core = require("@react-native-kakao/core");
|
|
8
|
+
function validateShippingAddressOptions({
|
|
9
|
+
addressId,
|
|
10
|
+
fromUpdatedAt,
|
|
11
|
+
pageSize
|
|
12
|
+
}) {
|
|
13
|
+
if (addressId != null) {
|
|
14
|
+
(0, _core.kAssert)(Number.isSafeInteger(addressId), '[shippingAddresses] addressId must be a safe integer');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
(0, _core.kAssert)(fromUpdatedAt == null || Number.isSafeInteger(fromUpdatedAt) && fromUpdatedAt >= 0, '[shippingAddresses] fromUpdatedAt must be a non-negative safe integer in Unix seconds');
|
|
18
|
+
(0, _core.kAssert)(pageSize == null || Number.isInteger(pageSize) && pageSize >= 2 && pageSize <= 2147483647, '[shippingAddresses] pageSize must be an integer between 2 and 2147483647');
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=validateShippingAddressOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","validateShippingAddressOptions","addressId","fromUpdatedAt","pageSize","kAssert","Number","isSafeInteger","isInteger"],"sourceRoot":"../../src","sources":["validateShippingAddressOptions.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,SAASC,8BAA8BA,CAAC;EAC7CC,SAAS;EACTC,aAAa;EACbC;AAKF,CAAC,EAAE;EACD,IAAIF,SAAS,IAAI,IAAI,EAAE;IACrB,IAAAG,aAAO,EACLC,MAAM,CAACC,aAAa,CAACL,SAAS,CAAC,EAC/B,sDACF,CAAC;IAED;EACF;EAEA,IAAAG,aAAO,EACLF,aAAa,IAAI,IAAI,IAAKG,MAAM,CAACC,aAAa,CAACJ,aAAa,CAAC,IAAIA,aAAa,IAAI,CAAE,EACpF,uFACF,CAAC;EAED,IAAAE,aAAO,EACLD,QAAQ,IAAI,IAAI,IAAKE,MAAM,CAACE,SAAS,CAACJ,QAAQ,CAAC,IAAIA,QAAQ,IAAI,CAAC,IAAIA,QAAQ,IAAI,UAAW,EAC3F,0EACF,CAAC;AACH","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -3,16 +3,53 @@
|
|
|
3
3
|
import { is } from '@mj-studio/js-util';
|
|
4
4
|
import { kAssert } from '@react-native-kakao/core';
|
|
5
5
|
import Native from './spec/NativeKakaoUser';
|
|
6
|
+
import { validateShippingAddressOptions } from './validateShippingAddressOptions';
|
|
7
|
+
const minActivityRequestCode = -2147483648;
|
|
8
|
+
const maxActivityRequestCode = 2147483647;
|
|
6
9
|
export function login({
|
|
7
10
|
serviceTerms,
|
|
8
11
|
prompts,
|
|
9
12
|
useKakaoAccountLogin,
|
|
10
13
|
scopes,
|
|
11
|
-
nonce
|
|
14
|
+
nonce,
|
|
15
|
+
loginHint,
|
|
16
|
+
channelPublicIds,
|
|
17
|
+
android
|
|
12
18
|
} = {}) {
|
|
19
|
+
const requestCode = android?.requestCode;
|
|
20
|
+
kAssert(requestCode == null || Number.isInteger(requestCode) && requestCode >= minActivityRequestCode && requestCode <= maxActivityRequestCode, `[login] android.requestCode must be an integer from ${minActivityRequestCode} to ${maxActivityRequestCode}`);
|
|
13
21
|
kAssert(!useKakaoAccountLogin ? !is.notEmptyArray(prompts) && !is.notEmptyArray(scopes) : true, '[login] `prompts` and `scopes` cannot be passed if useKakaoAccountLogin is false.');
|
|
14
|
-
kAssert(is.notEmptyArray(scopes) ? !is.notEmptyArray(prompts) && !is.notEmptyArray(serviceTerms) : true, '[login] `scopes` cannot be passed with `prompts` or `
|
|
15
|
-
|
|
22
|
+
kAssert(is.notEmptyArray(scopes) ? !is.notEmptyArray(prompts) && !is.notEmptyArray(serviceTerms) && !is.notEmptyArray(channelPublicIds) : true, '[login] `scopes` cannot be passed with `prompts`, `serviceTerms`, or `channelPublicIds`');
|
|
23
|
+
kAssert(loginHint == null || !is.notEmptyArray(scopes) && !is.notEmptyArray(serviceTerms) && !is.notEmptyArray(channelPublicIds), '[login] `loginHint` cannot be passed with `scopes`, `serviceTerms`, or `channelPublicIds` on native platforms.');
|
|
24
|
+
return Native.login(serviceTerms ?? [], prompts ?? [], useKakaoAccountLogin ?? false, scopes ?? [], nonce, loginHint, channelPublicIds ?? [], requestCode);
|
|
25
|
+
}
|
|
26
|
+
export async function signup({
|
|
27
|
+
properties
|
|
28
|
+
} = {}) {
|
|
29
|
+
await Native.signup(properties);
|
|
30
|
+
}
|
|
31
|
+
export function loginWithKakao({
|
|
32
|
+
uiMode = 'auto',
|
|
33
|
+
prompts,
|
|
34
|
+
loginHint,
|
|
35
|
+
nonce,
|
|
36
|
+
channelPublicIds,
|
|
37
|
+
serviceTerms,
|
|
38
|
+
ios
|
|
39
|
+
} = {}) {
|
|
40
|
+
return Native.loginWithKakao(uiMode, ios?.orientation ?? 'auto', ios?.launchMethod ?? 'UniversalLink', prompts ?? [], loginHint, nonce, channelPublicIds ?? [], serviceTerms ?? []);
|
|
41
|
+
}
|
|
42
|
+
export function refreshToken({
|
|
43
|
+
token,
|
|
44
|
+
ios
|
|
45
|
+
} = {}) {
|
|
46
|
+
kAssert(ios?.loggingEnabled == null || typeof ios.loggingEnabled === 'boolean', '[refreshToken] ios.loggingEnabled must be a boolean');
|
|
47
|
+
if (token !== undefined) {
|
|
48
|
+
kAssert(token != null && is.string(token.accessToken) && token.accessToken.length > 0 && is.string(token.refreshToken) && token.refreshToken.length > 0, '[refreshToken] token must contain non-empty accessToken and refreshToken strings');
|
|
49
|
+
kAssert([token.accessTokenExpiresAt, token.refreshTokenExpiresAt].every(value => Number.isFinite(value) && !Number.isNaN(new Date(value * 1000).getTime())) && [token.accessTokenExpiresIn, token.refreshTokenExpiresIn].every(Number.isFinite), '[refreshToken] token expiry timestamps must be valid Unix seconds and lifetimes must be finite');
|
|
50
|
+
kAssert((token.tokenType == null || is.string(token.tokenType)) && (token.idToken == null || is.string(token.idToken)) && Array.isArray(token.scopes) && token.scopes.every(scope => is.string(scope)), '[refreshToken] tokenType and idToken must be strings when present, and scopes must be strings');
|
|
51
|
+
}
|
|
52
|
+
return Native.refreshToken(token, ios?.loggingEnabled ?? true);
|
|
16
53
|
}
|
|
17
54
|
export function logout() {
|
|
18
55
|
return Native.logout();
|
|
@@ -23,6 +60,7 @@ export function unlink() {
|
|
|
23
60
|
export function isLogined() {
|
|
24
61
|
return Native.isLogined();
|
|
25
62
|
}
|
|
63
|
+
export const hasToken = Native.hasToken;
|
|
26
64
|
export function isKakaoTalkLoginAvailable() {
|
|
27
65
|
return Native.isKakaoTalkLoginAvailable();
|
|
28
66
|
}
|
|
@@ -32,18 +70,51 @@ export function scopes(scopes) {
|
|
|
32
70
|
export function revokeScopes(scopes) {
|
|
33
71
|
return Native.revokeScopes(scopes);
|
|
34
72
|
}
|
|
35
|
-
export function serviceTerms(
|
|
36
|
-
|
|
73
|
+
export function serviceTerms({
|
|
74
|
+
result,
|
|
75
|
+
tags
|
|
76
|
+
} = {}) {
|
|
77
|
+
return Native.serviceTerms(result, tags);
|
|
78
|
+
}
|
|
79
|
+
export async function shippingAddresses({
|
|
80
|
+
addressId,
|
|
81
|
+
fromUpdatedAt,
|
|
82
|
+
pageSize
|
|
83
|
+
} = {}) {
|
|
84
|
+
validateShippingAddressOptions({
|
|
85
|
+
addressId,
|
|
86
|
+
fromUpdatedAt,
|
|
87
|
+
pageSize
|
|
88
|
+
});
|
|
89
|
+
return Native.shippingAddresses(addressId, fromUpdatedAt, pageSize);
|
|
37
90
|
}
|
|
38
|
-
export function
|
|
39
|
-
return Native.
|
|
91
|
+
export function revokeServiceTerms(tags) {
|
|
92
|
+
return Native.revokeServiceTerms(tags);
|
|
40
93
|
}
|
|
41
|
-
export function
|
|
42
|
-
return Native.
|
|
94
|
+
export function selectShippingAddress() {
|
|
95
|
+
return Native.selectShippingAddress();
|
|
96
|
+
}
|
|
97
|
+
export function me({
|
|
98
|
+
secureResource = true
|
|
99
|
+
} = {}) {
|
|
100
|
+
return Native.me(secureResource);
|
|
101
|
+
}
|
|
102
|
+
export async function issueAccessTokenWithCode({
|
|
103
|
+
code,
|
|
104
|
+
codeVerifier,
|
|
105
|
+
redirectUri
|
|
106
|
+
}) {
|
|
107
|
+
kAssert(is.string(code) && code.length > 0, '[issueAccessTokenWithCode] code is required');
|
|
108
|
+
return Native.issueAccessTokenWithCode(code, codeVerifier, redirectUri);
|
|
43
109
|
}
|
|
44
110
|
export function getAccessToken() {
|
|
45
111
|
return Native.getAccessToken();
|
|
46
112
|
}
|
|
113
|
+
export function updateProfile({
|
|
114
|
+
properties
|
|
115
|
+
}) {
|
|
116
|
+
return Native.updateProfile(properties);
|
|
117
|
+
}
|
|
47
118
|
|
|
48
119
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
120
|
export function setAccessTokenWeb(token) {}
|
|
@@ -53,15 +124,23 @@ export async function issueAccessTokenWithCodeWeb(params) {
|
|
|
53
124
|
}
|
|
54
125
|
const KakaoUser = {
|
|
55
126
|
login,
|
|
127
|
+
loginWithKakao,
|
|
128
|
+
refreshToken,
|
|
129
|
+
issueAccessTokenWithCode,
|
|
130
|
+
signup,
|
|
56
131
|
logout,
|
|
57
132
|
unlink,
|
|
58
133
|
isLogined,
|
|
134
|
+
hasToken,
|
|
59
135
|
isKakaoTalkLoginAvailable,
|
|
60
136
|
scopes,
|
|
61
137
|
revokeScopes,
|
|
62
138
|
serviceTerms,
|
|
139
|
+
revokeServiceTerms,
|
|
63
140
|
shippingAddresses,
|
|
141
|
+
selectShippingAddress,
|
|
64
142
|
me,
|
|
143
|
+
updateProfile,
|
|
65
144
|
getAccessToken,
|
|
66
145
|
setAccessTokenWeb,
|
|
67
146
|
issueAccessTokenWithCodeWeb
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["is","kAssert","Native","login","serviceTerms","prompts","useKakaoAccountLogin","scopes","nonce","notEmptyArray","logout","unlink","isLogined","isKakaoTalkLoginAvailable","revokeScopes","shippingAddresses","me","getAccessToken","
|
|
1
|
+
{"version":3,"names":["is","kAssert","Native","validateShippingAddressOptions","minActivityRequestCode","maxActivityRequestCode","login","serviceTerms","prompts","useKakaoAccountLogin","scopes","nonce","loginHint","channelPublicIds","android","requestCode","Number","isInteger","notEmptyArray","signup","properties","loginWithKakao","uiMode","ios","orientation","launchMethod","refreshToken","token","loggingEnabled","undefined","string","accessToken","length","accessTokenExpiresAt","refreshTokenExpiresAt","every","value","isFinite","isNaN","Date","getTime","accessTokenExpiresIn","refreshTokenExpiresIn","tokenType","idToken","Array","isArray","scope","logout","unlink","isLogined","hasToken","isKakaoTalkLoginAvailable","revokeScopes","result","tags","shippingAddresses","addressId","fromUpdatedAt","pageSize","revokeServiceTerms","selectShippingAddress","me","secureResource","issueAccessTokenWithCode","code","codeVerifier","redirectUri","getAccessToken","updateProfile","setAccessTokenWeb","issueAccessTokenWithCodeWeb","params","KakaoUser"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.web.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { camelCaseObject, filterNonNullishKeys, is } from '@mj-studio/js-util';
|
|
4
|
-
import { kFetch, kFetchFormUrlEncoded, kGlobalStorage, kRunWebAPI } from '@react-native-kakao/core';
|
|
5
|
-
import
|
|
4
|
+
import { kAssert, kCreateWebError, kFetch, kFetchFormUrlEncoded, kGlobalStorage, kRunWebAPI } from '@react-native-kakao/core';
|
|
5
|
+
import { validateShippingAddressOptions } from './validateShippingAddressOptions';
|
|
6
6
|
function isoToUnix(value) {
|
|
7
7
|
if (!is.string(value)) {
|
|
8
8
|
return value;
|
|
@@ -10,25 +10,76 @@ function isoToUnix(value) {
|
|
|
10
10
|
return Date.parse(value) / 1000;
|
|
11
11
|
}
|
|
12
12
|
const KakaoUser = {
|
|
13
|
+
loginWithKakao: () => kRunWebAPI(() => {
|
|
14
|
+
throw {
|
|
15
|
+
code: 'Package-UnsupportedPlatform',
|
|
16
|
+
message: 'loginWithKakao is supported on Android and iOS. Use login with web.redirectUri on web.'
|
|
17
|
+
};
|
|
18
|
+
}),
|
|
19
|
+
refreshToken: () => kRunWebAPI(() => {
|
|
20
|
+
throw {
|
|
21
|
+
code: 'Package-UnsupportedPlatform',
|
|
22
|
+
message: 'The Kakao JavaScript SDK does not support refreshToken.'
|
|
23
|
+
};
|
|
24
|
+
}),
|
|
25
|
+
hasToken: () => kRunWebAPI(() => Kakao.Auth.getAccessToken() != null),
|
|
13
26
|
getAccessToken: () => kRunWebAPI(async () => {
|
|
14
27
|
const {
|
|
15
28
|
id,
|
|
16
29
|
expires_in,
|
|
17
30
|
app_id
|
|
18
|
-
} =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
})).body;
|
|
31
|
+
} = await Kakao.API.request({
|
|
32
|
+
url: '/v1/user/access_token_info'
|
|
33
|
+
});
|
|
23
34
|
return {
|
|
24
35
|
id,
|
|
25
36
|
expiresIn: expires_in,
|
|
26
37
|
appId: app_id
|
|
27
38
|
};
|
|
28
39
|
}),
|
|
40
|
+
issueAccessTokenWithCode: ({
|
|
41
|
+
code,
|
|
42
|
+
codeVerifier,
|
|
43
|
+
redirectUri,
|
|
44
|
+
web
|
|
45
|
+
}) => kRunWebAPI(async () => {
|
|
46
|
+
kAssert(is.string(code) && code.length > 0 && is.string(redirectUri) && redirectUri.length > 0, '[issueAccessTokenWithCode] code and redirectUri are required on web');
|
|
47
|
+
if (typeof Kakao === 'undefined' || !Kakao.isInitialized()) {
|
|
48
|
+
kCreateWebError({
|
|
49
|
+
code: 'Package-SDKNotInitialized',
|
|
50
|
+
message: 'Initialize the Kakao SDK before exchanging an authorization code.'
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const token = await KakaoUser.issueAccessTokenWithCodeWeb({
|
|
54
|
+
code,
|
|
55
|
+
codeVerifier,
|
|
56
|
+
redirectUri: redirectUri,
|
|
57
|
+
clientSecret: web?.clientSecret
|
|
58
|
+
});
|
|
59
|
+
if (!is.string(token.accessToken) || !token.accessToken || !is.string(token.refreshToken) || !token.refreshToken || !is.string(token.tokenType) || token.idToken != null && !is.string(token.idToken) || !Number.isFinite(token.expiresIn) || token.expiresIn < 0 || !Number.isFinite(token.refreshTokenExpiresIn) || token.refreshTokenExpiresIn < 0 || token.scope != null && !is.string(token.scope)) {
|
|
60
|
+
kCreateWebError({
|
|
61
|
+
code: 'Package-APIResponseNotFound',
|
|
62
|
+
message: 'issueAccessTokenWithCode returned invalid token data.'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const issuedAt = Math.floor(Date.now() / 1000);
|
|
66
|
+
KakaoUser.setAccessTokenWeb(token.accessToken);
|
|
67
|
+
return {
|
|
68
|
+
accessToken: token.accessToken,
|
|
69
|
+
refreshToken: token.refreshToken,
|
|
70
|
+
tokenType: token.tokenType,
|
|
71
|
+
idToken: token.idToken,
|
|
72
|
+
accessTokenExpiresIn: token.expiresIn,
|
|
73
|
+
refreshTokenExpiresIn: token.refreshTokenExpiresIn,
|
|
74
|
+
accessTokenExpiresAt: issuedAt + token.expiresIn,
|
|
75
|
+
refreshTokenExpiresAt: issuedAt + token.refreshTokenExpiresIn,
|
|
76
|
+
scopes: token.scope?.split(' ').filter(Boolean) ?? []
|
|
77
|
+
};
|
|
78
|
+
}),
|
|
29
79
|
issueAccessTokenWithCodeWeb: ({
|
|
30
80
|
clientSecret,
|
|
31
81
|
code,
|
|
82
|
+
codeVerifier,
|
|
32
83
|
redirectUri
|
|
33
84
|
}) => kRunWebAPI(async () => {
|
|
34
85
|
const res = await kFetchFormUrlEncoded('https://kauth.kakao.com/oauth/token', {
|
|
@@ -36,19 +87,17 @@ const KakaoUser = {
|
|
|
36
87
|
body: filterNonNullishKeys({
|
|
37
88
|
grant_type: 'authorization_code',
|
|
38
89
|
client_id: kGlobalStorage.restApiKey,
|
|
39
|
-
redirect_uri:
|
|
90
|
+
redirect_uri: redirectUri,
|
|
40
91
|
code,
|
|
92
|
+
code_verifier: codeVerifier,
|
|
41
93
|
client_secret: clientSecret
|
|
42
94
|
})
|
|
43
95
|
}).then(r => r.body);
|
|
44
96
|
return camelCaseObject(res);
|
|
45
97
|
}),
|
|
46
98
|
setAccessTokenWeb: token => {
|
|
99
|
+
Kakao.Auth.setAccessToken(token);
|
|
47
100
|
kGlobalStorage.accessToken = token;
|
|
48
|
-
return new Promise(r => {
|
|
49
|
-
Kakao.Auth.setAccessToken(token);
|
|
50
|
-
r(42);
|
|
51
|
-
});
|
|
52
101
|
},
|
|
53
102
|
login: params => kRunWebAPI(() => {
|
|
54
103
|
const {
|
|
@@ -61,18 +110,36 @@ const KakaoUser = {
|
|
|
61
110
|
throughTalk,
|
|
62
111
|
serviceTerms
|
|
63
112
|
} = params?.web ?? {};
|
|
113
|
+
const channelPublicIds = params?.channelPublicIds;
|
|
64
114
|
return Kakao.Auth.authorize(filterNonNullishKeys({
|
|
65
|
-
loginHint,
|
|
115
|
+
loginHint: params?.loginHint ?? loginHint,
|
|
116
|
+
channelPublicId: channelPublicIds?.length ? channelPublicIds.join(',') : undefined,
|
|
66
117
|
nonce: params?.nonce ?? nonce,
|
|
67
|
-
prompt: prompt?.join(','),
|
|
118
|
+
prompt: (prompt ?? params?.prompts?.map(value => value === 'SelectAccount' ? 'select_account' : value.toLowerCase()))?.join(','),
|
|
68
119
|
redirectUri,
|
|
69
|
-
scope: scope?.join(','),
|
|
70
|
-
serviceTerms: serviceTerms?.join(','),
|
|
120
|
+
scope: (scope ?? params?.scopes)?.join(','),
|
|
121
|
+
serviceTerms: (serviceTerms ?? params?.serviceTerms)?.join(','),
|
|
71
122
|
state,
|
|
72
|
-
throughTalk
|
|
123
|
+
throughTalk: throughTalk ?? (params?.useKakaoAccountLogin ? false : undefined)
|
|
73
124
|
}));
|
|
74
125
|
}),
|
|
75
|
-
|
|
126
|
+
signup: ({
|
|
127
|
+
properties
|
|
128
|
+
} = {}) => kRunWebAPI(async () => {
|
|
129
|
+
await Kakao.API.request({
|
|
130
|
+
url: '/v1/user/signup',
|
|
131
|
+
data: filterNonNullishKeys({
|
|
132
|
+
properties
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
}),
|
|
136
|
+
logout: () => kRunWebAPI(async () => {
|
|
137
|
+
try {
|
|
138
|
+
await Kakao.Auth.logout();
|
|
139
|
+
} finally {
|
|
140
|
+
kGlobalStorage.clearAccessToken();
|
|
141
|
+
}
|
|
142
|
+
}),
|
|
76
143
|
isLogined: async () => {
|
|
77
144
|
try {
|
|
78
145
|
const {
|
|
@@ -84,68 +151,195 @@ const KakaoUser = {
|
|
|
84
151
|
}
|
|
85
152
|
},
|
|
86
153
|
isKakaoTalkLoginAvailable: async () => false,
|
|
87
|
-
unlink: () => kRunWebAPI(() =>
|
|
88
|
-
|
|
89
|
-
|
|
154
|
+
unlink: () => kRunWebAPI(async () => {
|
|
155
|
+
await Kakao.API.request({
|
|
156
|
+
url: '/v1/user/unlink'
|
|
157
|
+
});
|
|
158
|
+
Kakao.Auth.setAccessToken(null);
|
|
159
|
+
kGlobalStorage.clearAccessToken();
|
|
160
|
+
}),
|
|
90
161
|
scopes: scopes => kRunWebAPI(async () => {
|
|
91
162
|
const response = await Kakao.API.request({
|
|
92
|
-
url:
|
|
163
|
+
url: '/v2/user/scopes',
|
|
164
|
+
data: scopes?.length ? {
|
|
93
165
|
scopes
|
|
94
|
-
}
|
|
166
|
+
} : undefined
|
|
95
167
|
});
|
|
96
168
|
return camelCaseObject(response.scopes);
|
|
97
169
|
}),
|
|
98
|
-
revokeScopes: scopes => kRunWebAPI(() =>
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
170
|
+
revokeScopes: scopes => kRunWebAPI(async () => {
|
|
171
|
+
await Kakao.API.request({
|
|
172
|
+
url: '/v2/user/revoke/scopes',
|
|
173
|
+
data: {
|
|
174
|
+
scopes
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}),
|
|
178
|
+
serviceTerms: ({
|
|
179
|
+
result,
|
|
180
|
+
tags
|
|
181
|
+
} = {}) => kRunWebAPI(async () => {
|
|
182
|
+
const response = await Kakao.API.request({
|
|
183
|
+
url: '/v2/user/service_terms',
|
|
184
|
+
data: filterNonNullishKeys({
|
|
185
|
+
result,
|
|
186
|
+
tags: tags?.join(',')
|
|
187
|
+
})
|
|
188
|
+
});
|
|
189
|
+
return (response.service_terms ?? []).map(term => ({
|
|
190
|
+
tag: term.tag,
|
|
191
|
+
agreedAt: term.agreed_at ? isoToUnix(term.agreed_at) : undefined,
|
|
192
|
+
agreed: term.agreed,
|
|
193
|
+
required: term.required,
|
|
194
|
+
revocable: term.revocable
|
|
195
|
+
}));
|
|
196
|
+
}),
|
|
197
|
+
revokeServiceTerms: tags => kRunWebAPI(async () => {
|
|
198
|
+
const response = await Kakao.API.request({
|
|
199
|
+
url: '/v2/user/revoke/service_terms',
|
|
200
|
+
data: {
|
|
201
|
+
tags: tags.join(',')
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
return response.revoked_service_terms ?? [];
|
|
205
|
+
}),
|
|
206
|
+
shippingAddresses: ({
|
|
207
|
+
addressId,
|
|
208
|
+
fromUpdatedAt,
|
|
209
|
+
pageSize
|
|
210
|
+
} = {}) => kRunWebAPI(async () => {
|
|
211
|
+
validateShippingAddressOptions({
|
|
212
|
+
addressId,
|
|
213
|
+
fromUpdatedAt,
|
|
214
|
+
pageSize
|
|
215
|
+
});
|
|
216
|
+
const query = new URLSearchParams(Object.entries(filterNonNullishKeys(addressId != null ? {
|
|
217
|
+
address_id: addressId
|
|
218
|
+
} : {
|
|
219
|
+
from_updated_at: fromUpdatedAt,
|
|
220
|
+
page_size: pageSize
|
|
221
|
+
})).map(([key, value]) => [key, String(value)]));
|
|
222
|
+
const {
|
|
223
|
+
body
|
|
224
|
+
} = await kFetch(`https://kapi.kakao.com/v1/user/shipping_address?${query}`, {
|
|
225
|
+
headers: {
|
|
226
|
+
Authorization: `Bearer ${Kakao.Auth.getAccessToken() ?? ''}`
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
const response = camelCaseObject(body);
|
|
230
|
+
return {
|
|
231
|
+
userId: response.userId,
|
|
232
|
+
needsAgreement: response.shippingAddressesNeedsAgreement,
|
|
233
|
+
shippingAddresses: (response.shippingAddresses ?? []).map(address => ({
|
|
234
|
+
...address,
|
|
235
|
+
updatedAt: isoToUnix(address.updatedAt)
|
|
236
|
+
}))
|
|
237
|
+
};
|
|
238
|
+
}),
|
|
239
|
+
selectShippingAddress: () => kRunWebAPI(async () => {
|
|
240
|
+
try {
|
|
241
|
+
const {
|
|
242
|
+
address_id
|
|
243
|
+
} = await Kakao.Auth.selectShippingAddress();
|
|
244
|
+
return address_id;
|
|
245
|
+
} catch (error) {
|
|
246
|
+
if (error != null && typeof error === 'object' && 'error_code' in error) {
|
|
247
|
+
throw {
|
|
248
|
+
code: String(error.error_code),
|
|
249
|
+
message: 'error_msg' in error ? String(error.error_msg) : undefined
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
throw error;
|
|
102
253
|
}
|
|
103
|
-
})
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
254
|
+
}),
|
|
255
|
+
updateProfile: ({
|
|
256
|
+
properties
|
|
257
|
+
}) => kRunWebAPI(async () => {
|
|
258
|
+
await Kakao.API.request({
|
|
259
|
+
url: '/v1/user/update_profile',
|
|
260
|
+
data: {
|
|
261
|
+
properties
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}),
|
|
265
|
+
me: ({
|
|
266
|
+
secureResource = true
|
|
267
|
+
} = {}) => kRunWebAPI(async () => {
|
|
114
268
|
const ret = camelCaseObject(await Kakao.API.request({
|
|
115
|
-
url: '/v2/user/me'
|
|
269
|
+
url: '/v2/user/me',
|
|
270
|
+
data: {
|
|
271
|
+
secure_resource: secureResource
|
|
272
|
+
}
|
|
116
273
|
}));
|
|
117
274
|
const kakaoAccount = ret.kakaoAccount ?? {};
|
|
118
275
|
const properties = ret.properties ?? {};
|
|
276
|
+
const profile = kakaoAccount.profile ?? {};
|
|
277
|
+
const legalGender = kakaoAccount.legalGender;
|
|
119
278
|
return {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
279
|
+
id: ret.id,
|
|
280
|
+
hasSignedUp: ret.hasSignedUp ?? null,
|
|
281
|
+
uuid: ret.forPartner?.uuid ?? null,
|
|
282
|
+
groupUserToken: ret.groupUserToken ?? null,
|
|
283
|
+
isDefaultImage: profile.isDefaultImage ?? null,
|
|
284
|
+
isLeapMonth: kakaoAccount.isLeapMonth ?? null,
|
|
285
|
+
legalName: kakaoAccount.legalName ?? null,
|
|
286
|
+
legalNameNeedsAgreement: kakaoAccount.legalNameNeedsAgreement ?? null,
|
|
287
|
+
legalBirthDate: kakaoAccount.legalBirthDate ?? null,
|
|
288
|
+
legalBirthDateNeedsAgreement: kakaoAccount.legalBirthDateNeedsAgreement,
|
|
289
|
+
legalGender: legalGender === 'female' || legalGender === 'male' ? legalGender : null,
|
|
290
|
+
legalGenderNeedsAgreement: kakaoAccount.legalGenderNeedsAgreement ?? null,
|
|
123
291
|
email: kakaoAccount.email,
|
|
124
|
-
name:
|
|
125
|
-
nickname:
|
|
126
|
-
profileImageUrl: properties.profileImage,
|
|
127
|
-
thumbnailImageUrl: properties.thumbnailImage,
|
|
128
|
-
phoneNumber: kakaoAccount.
|
|
129
|
-
isEmailValid:
|
|
130
|
-
isEmailVerified:
|
|
292
|
+
name: kakaoAccount.name,
|
|
293
|
+
nickname: profile.nickname ?? properties.nickname,
|
|
294
|
+
profileImageUrl: profile.profileImageUrl ?? properties.profileImage,
|
|
295
|
+
thumbnailImageUrl: profile.thumbnailImageUrl ?? properties.thumbnailImage,
|
|
296
|
+
phoneNumber: kakaoAccount.phoneNumber,
|
|
297
|
+
isEmailValid: kakaoAccount.isEmailValid,
|
|
298
|
+
isEmailVerified: kakaoAccount.isEmailVerified,
|
|
299
|
+
ageRange: kakaoAccount.ageRange,
|
|
300
|
+
birthday: kakaoAccount.birthday,
|
|
301
|
+
birthdayType: kakaoAccount.birthdayType,
|
|
302
|
+
birthyear: kakaoAccount.birthyear,
|
|
303
|
+
gender: kakaoAccount.gender,
|
|
304
|
+
isKorean: kakaoAccount.isKorean,
|
|
305
|
+
ageRangeNeedsAgreement: kakaoAccount.ageRangeNeedsAgreement,
|
|
306
|
+
birthdayNeedsAgreement: kakaoAccount.birthdayNeedsAgreement,
|
|
307
|
+
birthyearNeedsAgreement: kakaoAccount.birthyearNeedsAgreement,
|
|
308
|
+
emailNeedsAgreement: kakaoAccount.emailNeedsAgreement,
|
|
309
|
+
genderNeedsAgreement: kakaoAccount.genderNeedsAgreement,
|
|
310
|
+
isKoreanNeedsAgreement: kakaoAccount.isKoreanNeedsAgreement,
|
|
311
|
+
phoneNumberNeedsAgreement: kakaoAccount.phoneNumberNeedsAgreement,
|
|
312
|
+
profileNeedsAgreement: kakaoAccount.profileNeedsAgreement,
|
|
313
|
+
nameNeedsAgreement: kakaoAccount.nameNeedsAgreement,
|
|
314
|
+
profileImageNeedsAgreement: kakaoAccount.profileImageNeedsAgreement,
|
|
315
|
+
profileNicknameNeedsAgreement: kakaoAccount.profileNicknameNeedsAgreement,
|
|
131
316
|
connectedAt: isoToUnix(ret.connectedAt),
|
|
132
317
|
synchedAt: isoToUnix(ret.synchedAt)
|
|
133
318
|
};
|
|
134
319
|
})
|
|
135
320
|
};
|
|
136
321
|
export const {
|
|
322
|
+
loginWithKakao,
|
|
323
|
+
refreshToken,
|
|
324
|
+
issueAccessTokenWithCode,
|
|
137
325
|
isKakaoTalkLoginAvailable,
|
|
138
326
|
isLogined,
|
|
327
|
+
hasToken,
|
|
139
328
|
login,
|
|
329
|
+
signup,
|
|
140
330
|
logout,
|
|
141
331
|
me,
|
|
332
|
+
updateProfile,
|
|
142
333
|
revokeScopes,
|
|
143
334
|
scopes,
|
|
144
335
|
serviceTerms,
|
|
336
|
+
revokeServiceTerms,
|
|
145
337
|
shippingAddresses,
|
|
338
|
+
selectShippingAddress,
|
|
146
339
|
unlink,
|
|
147
340
|
setAccessTokenWeb,
|
|
148
341
|
issueAccessTokenWithCodeWeb,
|
|
149
342
|
getAccessToken
|
|
150
343
|
} = KakaoUser;
|
|
344
|
+
export default KakaoUser;
|
|
151
345
|
//# sourceMappingURL=index.web.js.map
|