openAuthorizationURL method

  1. @override
Future<String> openAuthorizationURL({
  1. required String url,
  2. required String redirectURI,
  3. required bool shareCookiesWithDeviceBrowser,
})
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);
  }
}