解决方法:端点只接受POST请求。收到 GET 请求

问题描述 投票:0回答:1

我尝试使用 firebase 在 flutter 应用程序中实现 Microsoft 登录。登录后,我收到以下错误端点仅接受 POST 请求。收到 GET 请求。 并且用户未正确重定向到我的应用程序。当重新打开我的应用程序时,我已成功登录。

我使用了代码:

Future<fire.UserCredential?> onMicrosoftLoginClicked() async {
    final microsoftProvider = fire.MicrosoftAuthProvider();
    microsoftProvider.setCustomParameters({'prompt': 'select_account'});
    microsoftProvider.addScope('User.Read'); // Request mandatory permission
    showLoaderDialog(context);

    try {
      if (kIsWeb) {
        // Web platform
        final credential =
            await fire.FirebaseAuth.instance.signInWithPopup(microsoftProvider);
        Navigator.of(context, rootNavigator: true).pop();
        return credential;
      } else {
        // Mobile platform
        Navigator.of(context, rootNavigator: true).pop();
        final credential = await fire.FirebaseAuth.instance
            .signInWithProvider(microsoftProvider);
        return credential;
      }
    } on fire.FirebaseAuthException catch (error) {
      Navigator.of(context, rootNavigator: true).pop();
      giveBackErrorMessage(error.message!);
      return null;
    } catch (error) {
      Navigator.of(context, rootNavigator: true).pop();
      giveBackErrorMessage('An unexpected error occurred: ${error.toString()}');
      return null;
    }
  }

我已经根据此文档设置了我的项目:

在 Android 上使用 Microsoft 进行身份验证

虽然 IOS 和 WEB 运行良好,但在 Android 设备上登录时出现以下错误。返回应用程序时,我已成功登录。我找到的此问题的唯一解决方案是禁用设置阻止第三方 cookie 和站点数据。我不希望我的所有用户都必须这样做。那会是什么样的用户体验?

有人知道这个错误的根源吗?这是由于 azure 广告门户中的 Android 平台设置错误造成的还是前端问题。

我感谢任何帮助,干杯!

android flutter firebase azure authentication
1个回答
0
投票

错误消息“端点仅接受 POST 请求。收到 GET 请求。”当预期的 HTTP 方法与正在使用的方法不匹配时,通常会发生这种情况。在这种情况下,当服务器期望 POST 请求时,身份验证过程似乎正在发送 GET 请求。 您可以尝试以下一些方法来解决此问题:

检查您的 Firebase 配置: 确保您已在 Firebase 控制台和 Microsoft Azure 门户中正确设置 OAuth 重定向 URI。重定向 URI 应与您的应用程序期望的 URI 匹配。 更新 Firebase SDK: 确保您使用的是最新版本的适用于 Flutter 的 Firebase SDK。有时,旧版本可能会出现某些身份验证提供程序的问题。 修改自定义参数: 尝试添加“response_mode”参数来强制 POST 请求:

microsoftProvider.setCustomParameters({ '提示': '选择帐户', 'response_mode': 'form_post' });

© www.soinside.com 2019 - 2024. All rights reserved.