Получить консольный журнал URL ответа в Webview во флаттере - PullRequest
0 голосов
/ 04 марта 2020

Я использовал плагин webview_flutter для отображения веб-просмотра во флаттере. В настоящее время я открываю API полосы в Webview. После успешного выполнения API-интерфейса полосы он будет перенаправлен на API-интерфейс моего сервера. В этом API проверяйте карточки с полосами и отправляйте ответ, который печатается в консоли. Я не получаю этот консольный журнал на флаттерной стороне.

                       WebView(
                            initialUrl: "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=${clientId}&scope=read_write&redirect_uri=${baseUrl}/transaction/connect&state=161",
                            javascriptMode: JavascriptMode.unrestricted,
                            javascriptChannels:  [
                              JavascriptChannel(
                                  name: 'Print',
                                  onMessageReceived: (JavascriptMessage message) {
                                    print('Message: ${message.message}');
                                  }),
                            ].toSet(),
                            onPageStarted: (url) {
                              debugPrint("onPageStarted $url");
                            },
                            onPageFinished: (url) {
                              debugPrint("onPageFinished $url");
                            })

Я пытался получить Javascript ответ от API в JavascriptChannel, и он попадает в android, но не на стороне iOS.

1) Есть ли какие-либо способ получить эти журналы на стороне флаттера?

2) Есть ли альтернатива для получения ответа от API для просмотра в флаттере?

1 Ответ

0 голосов
/ 16 марта 2020

Я нашел альтернативу, чтобы получить обратный звонок от Stripe API. В ответ на обратный вызов API я перенаправил на другой внутренний API.

 public connectWithStripe = async (req: CustomRequest, res: Response) => {
    request.post(process.env.StripeConnecturl
        , {
            form: {
                client_secret: process.env.StripeKey,
                code: req.query.code,
                grant_type: "authorization_code",
            },
        }, async (error: any, response: any) => {
            if (response && response.statusCode === 200) {
                const stripeDetails = {
                    stripeAccountId: JSON.parse(response.body).stripe_user_id,
                };
                return res.redirect('connect-success');  // redirect when successfully stripe account 
            } else {
                return res.redirect('connect-fail');   // fail
            }
        });
}

Со стороны флаттера мы получаем изменение URL в функции navigationDelegate.

WebView(
    initialUrl: url,
    navigationDelegate: (request) {
      if (request.url.contains('connect-success')) {
        // TODO when api success
      } else if (request.url.contains('connect-fail')) {
        // TODO when api fail
      }
      return NavigationDecision.navigate;
    },
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...