openAuthorizationURL method
override
Implementation
@override
Future<String> openAuthorizationURL({
required String url,
required String redirectURI,
required bool shareCookiesWithDeviceBrowser,
}) async {
final id = _rng.nextInt(math.pow(2, 32) as int).toRadixString(16);
final methodChannelName = "flutter_authgear:wechat:$id";
final methodChannel = MethodChannel(methodChannelName);
methodChannel.setMethodCallHandler((call) async {
final uri = Uri.parse(call.arguments);
final state = uri.queryParameters["state"];
if (state != null) {
final sendWechatAuthRequest = options?.sendWechatAuthRequest;
if (sendWechatAuthRequest != null) {
sendWechatAuthRequest(state);
}
}
});
try {
return await native.openAuthorizeURLWithWebView(
methodChannelName: methodChannelName,
url: url,
redirectURI: redirectURI,
modalPresentationStyle: options?.ios?.modalPresentationStyle?.value,
navigationBarBackgroundColor:
options?.ios?.navigationBarBackgroundColor?.toRadixString(16),
navigationBarButtonTintColor:
options?.ios?.navigationBarButtonTintColor?.toRadixString(16),
iosIsInspectable: options?.ios?.isInspectable,
actionBarBackgroundColor:
options?.android?.actionBarBackgroundColor?.toRadixString(16),
actionBarButtonTintColor:
options?.android?.actionBarButtonTintColor?.toRadixString(16),
iosWechatRedirectURI: options?.ios?.wechatRedirectURI,
androidWechatRedirectURI: options?.android?.wechatRedirectURI,
);
} finally {
// Clean up the listener.
methodChannel.setMethodCallHandler(null);
}
}