@dainprotocol/service-sdk 1.0.83 → 1.0.85
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/service/oauth2.js +21 -10
- package/dist/service/oauth2.js.map +1 -1
- package/dist/service/types.d.ts +1 -0
- package/package.json +1 -1
package/dist/service/oauth2.js
CHANGED
|
@@ -40,27 +40,30 @@ class OAuth2Handler {
|
|
|
40
40
|
provider,
|
|
41
41
|
timestamp: Date.now(),
|
|
42
42
|
};
|
|
43
|
-
//
|
|
43
|
+
// Base params
|
|
44
44
|
const baseParams = {
|
|
45
|
+
response_type: 'code',
|
|
45
46
|
client_id: providerConfig.clientId,
|
|
46
47
|
redirect_uri: `${this.baseUrl}/oauth2/callback/${provider}`,
|
|
47
|
-
response_type: 'code',
|
|
48
48
|
scope: providerConfig.scopes.join(' '),
|
|
49
|
-
state: await this.encodeState(stateData),
|
|
50
49
|
};
|
|
51
|
-
// Add any extra parameters defined in the provider config
|
|
52
|
-
if (providerConfig.extraAuthParams) {
|
|
53
|
-
Object.assign(baseParams, providerConfig.extraAuthParams);
|
|
54
|
-
}
|
|
55
50
|
if (providerConfig.usePKCE) {
|
|
51
|
+
// Generate random codeVerifier
|
|
56
52
|
const codeVerifier = this.generateCodeVerifier();
|
|
53
|
+
// Create the codeChallenge from codeVerifier
|
|
57
54
|
const codeChallenge = this.generateCodeChallenge(codeVerifier);
|
|
58
55
|
stateData.codeVerifier = codeVerifier;
|
|
56
|
+
// Add PKCE fields
|
|
59
57
|
Object.assign(baseParams, {
|
|
60
58
|
code_challenge: codeChallenge,
|
|
61
|
-
code_challenge_method: 'S256'
|
|
59
|
+
code_challenge_method: 'S256',
|
|
62
60
|
});
|
|
63
61
|
}
|
|
62
|
+
baseParams.state = await this.encodeState(stateData);
|
|
63
|
+
if (providerConfig.extraAuthParams) {
|
|
64
|
+
Object.assign(baseParams, providerConfig.extraAuthParams);
|
|
65
|
+
}
|
|
66
|
+
// Construct the final URL
|
|
64
67
|
const params = new URLSearchParams(baseParams);
|
|
65
68
|
return `${providerConfig.authorizationUrl}?${params.toString()}`;
|
|
66
69
|
}
|
|
@@ -88,10 +91,13 @@ class OAuth2Handler {
|
|
|
88
91
|
code,
|
|
89
92
|
grant_type: 'authorization_code',
|
|
90
93
|
});
|
|
91
|
-
if (
|
|
94
|
+
if (config.usePKCE) {
|
|
95
|
+
if (!codeVerifier) {
|
|
96
|
+
throw new Error("PKCE is enabled, but the codeVerifier is missing from state.");
|
|
97
|
+
}
|
|
92
98
|
params.append('code_verifier', codeVerifier);
|
|
93
99
|
}
|
|
94
|
-
else
|
|
100
|
+
else {
|
|
95
101
|
params.append('client_secret', config.clientSecret);
|
|
96
102
|
}
|
|
97
103
|
const headers = {
|
|
@@ -112,6 +118,11 @@ class OAuth2Handler {
|
|
|
112
118
|
throw new Error(`Failed to exchange code for tokens: ${error}`);
|
|
113
119
|
}
|
|
114
120
|
const data = await response.json();
|
|
121
|
+
// If the provider specifies a responseRootKey (e.g. 'authed_user' for Telegram),
|
|
122
|
+
// parse the token data from that sub-object.
|
|
123
|
+
if (config.responseRootKey && data[config.responseRootKey]) {
|
|
124
|
+
Object.assign(data, data[config.responseRootKey]);
|
|
125
|
+
}
|
|
115
126
|
return {
|
|
116
127
|
accessToken: data.access_token,
|
|
117
128
|
refreshToken: data.refresh_token,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":";;;AACA,+CAAoD;AACpD,+CAAyD;AACzD,mCAAiD;AASjD,MAAa,aAAa;IACP,SAAS,CAAoC;IAC7C,UAAU,CAAS;IACnB,OAAO,CAAS;IAChB,UAAU,CAA0B;IAErD,YAAY,UAAkB,EAAE,OAAe,EAAE,UAAoC;QACnF,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,sCAAwB,EAAE,CAAC;IACjE,CAAC;IAED,gBAAgB,CAAC,IAAY,EAAE,MAA4B;QACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAA,oBAAW,EAAC,EAAE,CAAC;aACnB,QAAQ,CAAC,QAAQ,CAAC;aAClB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC;IAEO,qBAAqB,CAAC,QAAgB;QAC5C,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,OAAe;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAc;YAC3B,OAAO;YACP,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,
|
|
1
|
+
{"version":3,"file":"oauth2.js","sourceRoot":"","sources":["../../src/service/oauth2.ts"],"names":[],"mappings":"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"}
|
package/dist/service/types.d.ts
CHANGED
|
@@ -188,6 +188,7 @@ export interface OAuth2ProviderConfig {
|
|
|
188
188
|
requiredTools?: string[];
|
|
189
189
|
onSuccess?: (agentId: string, tokens: OAuth2Tokens) => Promise<void>;
|
|
190
190
|
extraAuthParams?: Record<string, string>;
|
|
191
|
+
responseRootKey?: string;
|
|
191
192
|
}
|
|
192
193
|
export type OAuth2Config = {
|
|
193
194
|
providers: Record<string, OAuth2ProviderConfig>;
|