我尝试使用 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 平台设置错误造成的还是前端问题。
我感谢任何帮助,干杯!
错误消息“端点仅接受 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' });