Skip to content

Commit fd10347

Browse files
committed
Add an option to set custom token nonce
1 parent 3b0768c commit fd10347

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

ios/Classes/SwiftFlutterLineSdkPlugin.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,23 +130,23 @@ extension LineChannelMethod {
130130
}
131131

132132
let scopes = (args["scopes"] as? [String])?.map { LoginPermission(rawValue: $0) } ?? [.profile]
133-
let onlyWebLogin = (args["onlyWebLogin"] as? Bool) ?? false
134-
135-
var options: LoginManagerOptions = []
136-
if onlyWebLogin { options = .onlyWebLogin }
137-
133+
134+
var parameters = LoginManager.Parameters()
135+
parameters.onlyWebLogin = (args["onlyWebLogin"] as? Bool) ?? false
136+
parameters.IDTokenNonce = args["idTokenNonce"] as? String
137+
138138
if let botPrompt = args["botPrompt"] as? String {
139139
switch botPrompt {
140-
case "aggressive": options.insert(.botPromptAggressive)
141-
case "normal": options.insert(.botPromptNormal)
140+
case "aggressive": parameters.botPromptStyle = .aggressive
141+
case "normal": parameters.botPromptStyle = .normal
142142
default: break
143143
}
144144
}
145145

146146
LoginManager.shared.login(
147147
permissions: Set(scopes),
148148
in: nil,
149-
options: options) { r in
149+
parameters: parameters) { r in
150150
switch r {
151151
case .success(let value): result(value.json)
152152
case .failure(let error): result(error.flutterError)
@@ -173,7 +173,7 @@ extension LineChannelMethod {
173173
}
174174

175175
func refreshToken(arguments: [String: Any]?, result: @escaping FlutterResult) {
176-
API.refreshAccessToken { r in
176+
API.Auth.refreshAccessToken { r in
177177
switch r {
178178
case .success(let value): result(value.json)
179179
case .failure(let error): result(error.flutterError)
@@ -182,7 +182,7 @@ extension LineChannelMethod {
182182
}
183183

184184
func verifyAccessToken(arguments: [String: Any]?, result: @escaping FlutterResult) {
185-
API.verifyAccessToken { r in
185+
API.Auth.verifyAccessToken { r in
186186
switch r {
187187
case .success(let value): result(value.json)
188188
case .failure(let error): result(error.flutterError)

lib/src/line_sdk.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ class LineSDK {
100100
'loginRequestCode': option?.requestCode,
101101
'scopes': scopes,
102102
'onlyWebLogin': option?.onlyWebLogin,
103-
'botPrompt': option?.botPrompt
103+
'botPrompt': option?.botPrompt,
104+
'idTokenNonce': option?.idTokenNonce,
104105
}).then((value) => LoginResult._(_decodeJson(value)));
105106
}
106107

lib/src/model/login_option.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ class LoginOption {
4242
/// Request code that LINE login activity will be called with.
4343
int requestCode;
4444

45+
/// Sets the nonce value for ID token verification. This value is used when requesting user authorization
46+
/// with `.openID` permission to prevent replay attacks to your backend server. If not set, LINE SDK will
47+
/// generate a random value as the token nonce. Whether set or not, LINE SDK verifies against the nonce value
48+
/// in received ID token locally.
49+
String? idTokenNonce;
50+
4551
LoginOption(this.onlyWebLogin, this.botPrompt,
4652
{this.requestCode = DEFAULT_ACTIVITY_RESULT_REQUEST_CODE});
4753
}

0 commit comments

Comments
 (0)