api - 如何从 Flutter 发出 MVC API 请求
问题描述
我正在构建一个带有用户身份验证的 Flutter 应用程序。它适用于firebase。但是,我想重新编写 SQL Server 数据库。
我现在正在尝试获取从 MVC 应用程序返回的用户令牌。这是我的控制器中的代码:
Public Function AuthenticateUsers(ByVal APIKey As String, ByVal Password As String, ByVal ReturnSecureToken As Boolean) As JsonResult
Dim Users As Object
If String.IsNullOrEmpty(APIKey) Or String.IsNullOrEmpty(Password) Then
Users = "missing parameters"
Else
If APIKey = "mambo" AndAlso Password = "mambo@email.com" Then
Users = GetUsers()
Else
Users = "Invalid credentials"
End If
End If
Return Json(Users, JsonRequestBehavior.AllowGet)
End Function
Private Function GetUsers() As List(Of UserModel)
Dim usersList = New List(Of UserModel) From {
New UserModel With {
.idToken = 200,
.localId = "localId",
.expiresIn = "3600"
}
}
Return usersList
End Function
这是 Flutter 应用中负责身份验证的代码部分:
Future<void> _authenticate(
String email, String password, String urlSegment) async {
// final url =
// 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/$urlSegment?key=LONGKEY';
final url = 'https://localhost:12345/Member/AutheticateUsers';
try {
final response = await http.post(
url,
body: json.encode(
{
'APIKey': email.trim(),
'Password': password.trim(),
'ReturnSecureToken': true,
},
),
);
final responseData = json.decode(response.body);
if (responseData['error'] != null) {
throw HttpException(responseData['error']['message']);
}
_token = responseData['idToken'];
_userId = responseData['localId'];
_expiryDate = DateTime.now().add(
Duration(
seconds: int.parse(
responseData['expiresIn'],
),
),
);
_autoLogout();
notifyListeners();
final prefs = await SharedPreferences.getInstance();
final userData = json.encode(
{
'token': _token,
'userId': _userId,
'expiryDate': _expiryDate.toIso8601String(),
},
);
prefs.setString('userData', userData);
} catch (error) {
print(error);
throw error;
}
}
我已经注释掉了那一行,它将成功地向 firebase 进行身份验证,并重写了一个 url 以重定向到我的 MVC 应用程序。
所以现在的问题是我收到请求被拒绝的错误。这是我第一次尝试让外部应用程序调用 API。所以我想我可能会遗漏一些先决条件/格式。
有人可以指导我如何完成这项工作。
谢谢!
解决方案
您将请求定向到端口 0,
我从未见过,您确定该端口确实存在吗?
更典型的端口是 80(默认)、8080...
推荐阅读
- angular - Angular:数据路径“”不应具有其他属性(entryComponent)
- java - 为什么这个简单的广播接收器不起作用?
- jenkins - Jenkinsfile 一种类型的参数而不是两种类型,将选择转换为字符串或字符串转换为选择
- python - python以所需的顺序重新排序列和数据框
- swift - 带有 MPI 的集群上的 Swift
- security - 将生成的 shellcode 转换为十六进制
- docker - 无法在 docker 中集成 VPN
- python - 打字功能跨文件吗?
- traefik - Traefik 的 Nomad 高可用性
- node.js - OIDC 回调:axios 调用在 router.get 中不起作用