AUTH API REST Firebase Flutter 与 POSTMAN
AUTH API REST Firebase Flutter vs POSTMAN
我使用 API REST 和 Android Flutter 在 Firebase 中使用 AUTH 时遇到一些问题。在 POSTMAN 中工作正常:
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=AIzaSyCg8LuhQvn_CFZlNDV0ySK420xxxxxxx-U..。我有这个 JSON.
{
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "3GNFGIOFgBUT8BbV5n0vQxxxxxxx",
"email": "test@test.com",
"displayName": "",
"idToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjM1MDM0MmIwMjU1MDAyYWI3NWUwNTM0YzU4MmVjYzY2Y2YwZTE3ZDIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZmx1dHRlci12YXJpb3MtYjg4NGEiLCJhdWQiOiJmbHV0dGVyLXZhcmlvcy1iODg0YSIsImF1dGhfdGltZSI6MTYzMzQ0NzQ2OSwidXNlcl9pZCI6IjNHTkZHSU9GZ0JVVDhCYlY1bjB2UXN1Q3d0RTMiLCJzdWIiOiIzR05GR0lPRmdCVVQ4QmJWNW4wdlFzdUN3dEUzIiwiaWF0IjoxNjMzNDQ3NDY5LCJleHAiOjE2MzM0NTEwNjksImVtYWlsIjoidGVzdEB0ZXN0LmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJ0ZXN0QHRlc3QuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.GBDNfA7nzzJfK35rIf87fQhKtQFAPtyVltXQh0CcDzlbee-zvv-KEFAeNpS0LeQai3id2uJtY9QGEwssq0fYd_Jbob5F5E6ZLTqA7gVVShc7azP2Pu6xxCE6oWvTeW-kfeswNg1TUBGqP8jzlpLAhC__1HAI620s7bH6dqQJ2Ry2YDKUacZvBgFzJ-pMC7V7WcVYclzEEef5Q_c0l-duk8EJ1jhweo4YVJ4qma8WFxO-zWf_PbMLYytn2PjqDC4a9HIxsaiFQxXCwGxezYfBvpczS-c8_xYEp5LCFFI0dYwK4xWcNWgDCN46CjLQAH3uNewVuG97Hpe5O32mi9jM_Q",
"registered": true,
"refreshToken": "ACzBnCjCfLugjeNP92J7vqSwJp2jHyB68ztK_MoZBeSZPHzZ21RiH3S5u9hAdIa2E2qh0Z2FZE24b5J3bzTr0sVC9GCxFt-S-VRU4lk2lTpR8FeTcONDwx15IA9NFjr70n-8tG72IpvTNfuyUVyhiseI0xzpmyGv2kujA_gFI6n_P0PGQss3X6A15_582go7BNmCx12YDSEsLZR35YR4h6pQhClvRMvxPg",
"expiresIn": "3600"
}
与 'idToken' 一起使用
https://flutter-varios-xxxxxxxxxxxxxxxx.firebaseio.com/product/.json?auth=[idToken] 在 POSTMAN 中工作正常。
在使用 http:^0.13.4(依赖项)的 Flutter 中,我可以输入并且我有 JSON 但是 [idToken] 比 [=37= 小(字节大小) ] 与 POSTMAN。 idToken的大小是921 vs 678(Flutter http.post),不知道为什么:
login(String email, String password) async {
final authData = {
"email": email,
"password": password,
"returnSecureToke": true
};
final resp = await http.post(
Uri.parse(
'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=$_firebaseToken'),
body: json.encode(authData));
Map<String, dynamic> decodeResp = json.decode(resp.body);
//print('Decode Resp: ${decodeResp}');
if (decodeResp.containsKey('idToken')) {
print('ID Token: ${decodeResp['idToken']}');
_prefs.token = decodeResp['idToken'];
return {'ok': true, 'token': decodeResp['idToken']};
} else {
return {'ok': false, 'msj': decodeResp['error']['message']};
}
}
在我使用的 Firebase 实时数据库中(没有身份验证过滤器,当然一切正常)
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
因此,当 idToken 不正确时,我无法访问数据库。
如果您有任何建议,请告诉我,我将不胜感激
您对 authData
对象的定义有误:您有一个键 returnSecureToke
(没有 n
)而不是 returnSecureToken
。
我使用 API REST 和 Android Flutter 在 Firebase 中使用 AUTH 时遇到一些问题。在 POSTMAN 中工作正常: https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=AIzaSyCg8LuhQvn_CFZlNDV0ySK420xxxxxxx-U..。我有这个 JSON.
{
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "3GNFGIOFgBUT8BbV5n0vQxxxxxxx",
"email": "test@test.com",
"displayName": "",
"idToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjM1MDM0MmIwMjU1MDAyYWI3NWUwNTM0YzU4MmVjYzY2Y2YwZTE3ZDIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vZmx1dHRlci12YXJpb3MtYjg4NGEiLCJhdWQiOiJmbHV0dGVyLXZhcmlvcy1iODg0YSIsImF1dGhfdGltZSI6MTYzMzQ0NzQ2OSwidXNlcl9pZCI6IjNHTkZHSU9GZ0JVVDhCYlY1bjB2UXN1Q3d0RTMiLCJzdWIiOiIzR05GR0lPRmdCVVQ4QmJWNW4wdlFzdUN3dEUzIiwiaWF0IjoxNjMzNDQ3NDY5LCJleHAiOjE2MzM0NTEwNjksImVtYWlsIjoidGVzdEB0ZXN0LmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJ0ZXN0QHRlc3QuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.GBDNfA7nzzJfK35rIf87fQhKtQFAPtyVltXQh0CcDzlbee-zvv-KEFAeNpS0LeQai3id2uJtY9QGEwssq0fYd_Jbob5F5E6ZLTqA7gVVShc7azP2Pu6xxCE6oWvTeW-kfeswNg1TUBGqP8jzlpLAhC__1HAI620s7bH6dqQJ2Ry2YDKUacZvBgFzJ-pMC7V7WcVYclzEEef5Q_c0l-duk8EJ1jhweo4YVJ4qma8WFxO-zWf_PbMLYytn2PjqDC4a9HIxsaiFQxXCwGxezYfBvpczS-c8_xYEp5LCFFI0dYwK4xWcNWgDCN46CjLQAH3uNewVuG97Hpe5O32mi9jM_Q",
"registered": true,
"refreshToken": "ACzBnCjCfLugjeNP92J7vqSwJp2jHyB68ztK_MoZBeSZPHzZ21RiH3S5u9hAdIa2E2qh0Z2FZE24b5J3bzTr0sVC9GCxFt-S-VRU4lk2lTpR8FeTcONDwx15IA9NFjr70n-8tG72IpvTNfuyUVyhiseI0xzpmyGv2kujA_gFI6n_P0PGQss3X6A15_582go7BNmCx12YDSEsLZR35YR4h6pQhClvRMvxPg",
"expiresIn": "3600"
}
与 'idToken' 一起使用 https://flutter-varios-xxxxxxxxxxxxxxxx.firebaseio.com/product/.json?auth=[idToken] 在 POSTMAN 中工作正常。
在使用 http:^0.13.4(依赖项)的 Flutter 中,我可以输入并且我有 JSON 但是 [idToken] 比 [=37= 小(字节大小) ] 与 POSTMAN。 idToken的大小是921 vs 678(Flutter http.post),不知道为什么:
login(String email, String password) async {
final authData = {
"email": email,
"password": password,
"returnSecureToke": true
};
final resp = await http.post(
Uri.parse(
'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=$_firebaseToken'),
body: json.encode(authData));
Map<String, dynamic> decodeResp = json.decode(resp.body);
//print('Decode Resp: ${decodeResp}');
if (decodeResp.containsKey('idToken')) {
print('ID Token: ${decodeResp['idToken']}');
_prefs.token = decodeResp['idToken'];
return {'ok': true, 'token': decodeResp['idToken']};
} else {
return {'ok': false, 'msj': decodeResp['error']['message']};
}
}
在我使用的 Firebase 实时数据库中(没有身份验证过滤器,当然一切正常)
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
因此,当 idToken 不正确时,我无法访问数据库。 如果您有任何建议,请告诉我,我将不胜感激
您对 authData
对象的定义有误:您有一个键 returnSecureToke
(没有 n
)而不是 returnSecureToken
。