3

动图

我想从我的颤振应用程序通过画布上传图片,这就是我第一次使用颤振webview插件的原因,因此我无法解决这个问题。

相同的代码是: -

import 'package:flutter/material.dart';
import 'package:kf_drawer/kf_drawer.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'dart:async';


class SettingsPage extends KFDrawerContent {
  @override
  _SettingsPageState createState() => _SettingsPageState();
}

class _SettingsPageState extends State<SettingsPage> {

  final Completer<WebViewController> _controller =
  Completer<WebViewController>();

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Center(
        child: Column(
          children: <Widget>[
            Row(
              children: <Widget>[
                ....
              ],
            ),
            Expanded(
              child: Container(
                height: 500,
                child: WebView(
                  initialUrl: "https://shree-hari.github.io/laxmi_canva/index.html",
                  javascriptMode: JavascriptMode.unrestricted,
                  onWebViewCreated: (WebViewController webViewController){
                    _controller.complete(webViewController);
                  },
                ),
              ),
            )
          ],
        ),
      ),
    );

  }
}

请帮我解决这个问题。

4

3 回答 3

5

Google 不允许原生 Flutter Web-Views 发起 OAuth。
欲了解更多信息,请阅读谷歌博客

在您的情况下,我可以建议 3 种可能的解决方案。

  1. 尝试使用电子邮件/密码而不是 Google 登录来登录。
  2. 使用url_launcher将用户重定向到浏览器。
  3. 如果您不希望用户离开您的应用程序
    ,那么您可以使用flutter_custom_tabs
    这个插件使用Chrome 自定义选项卡在 Flutter 应用程序内创建原生体验。
于 2020-07-06T14:54:20.197 回答
3

您可以添加此 userAgent :

WebView(
    initialUrl: url,
    userAgent: Platform.isIOS ? 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15' +
        ' (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1' :
      'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ' + 
        'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Mobile Safari/537.36',
    ...
于 2021-02-01T23:13:26.130 回答
3

使用这个包,它就像一个魅力 https://github.com/LinusU/flutter_web_auth

在后台,此插件ASWebAuthenticationSession在 iOS 12+ 和 macOS 10.15+、SFAuthenticationSessioniOS 11、Chrome Custom TabsAndroid 上使用,并在 Web 上打开一个新窗口。

您的身份验证流程必须符合您在callbackUrlScheme财产中提供的方案。然后只需解析回调 url 并围绕登录/注册实现您自己的业务逻辑

import 'package:flutter_web_auth/flutter_web_auth.dart';

// Present the dialog to the user
final result = await FlutterWebAuth.authenticate(url: "https://my-custom-app.com/connect", callbackUrlScheme: "my-custom-app");

// Extract token from resulting url
final token = Uri.parse(result).queryParameters['token']
于 2021-12-16T16:10:37.280 回答