Dart中的Google Firebase和API:生成访问令牌和自定义访问令牌
在Dart中使用Google Firebase和Google API:在.Dart中是否有与以下两个.js程序等效的程序:Dart中的Google Firebase和API:生成访问令牌和自定义访问令牌,firebase,dart,firebase-authentication,Firebase,Dart,Firebase Authentication,在Dart中使用Google Firebase和Google API:在.Dart中是否有与以下两个.js程序等效的程序: 在服务器上生成访问令牌: ) 和2.: 在服务器端和客户端生成自定义访问令牌(此处混入一个用于测试): 我想知道我需要什么样的软件包,以及在哪里可以获得它的文档 至少粗略地翻译成dart程序会有帮助。您想要的dart软件包在这里: 我们有一些用于服务器端Dart的代码: 你也许可以做一些类似的事情 浏览器API的文档位于此处:您想要的Dart包位于此处: 我们有一些用于服
至少粗略地翻译成dart程序会有帮助。您想要的dart软件包在这里: 我们有一些用于服务器端Dart的代码: 你也许可以做一些类似的事情
浏览器API的文档位于此处:您想要的Dart包位于此处: 我们有一些用于服务器端Dart的代码: 你也许可以做一些类似的事情
这里的浏览器API文档:解决方案是找到一个使用RSA签名令牌的jwt库,RSA似乎是现有库中不太流行的替代方案 pubspec.yaml:
dependencies:
firebase: "4.2.0+1"
just_jwt: "1.3.1"
createCustomToken.dart:
import 'dart:async';
import 'dart:convert' as convert;
import 'package:just_jwt/just_jwt.dart' as jj;
Future main() async {
String client_email = "xxxxxxx";
final DateTime issuedAt = new DateTime.now();
final DateTime expiresAt = issuedAt.add(const Duration(minutes: 30));
String uid = "some-uid";
jj.EncodedJwt encodedJwt;
Map<String, Object> payload = {
"iss": client_email,
"sub": client_email,
"aud": "xxxxxx",
"iat": (issuedAt.millisecondsSinceEpoch / 1000).floor(),
"exp": (issuedAt.millisecondsSinceEpoch / 1000).floor() + (60 * 30),
"uid": uid,
"claims": {}
};
var sign = jj.toTokenSigner(jj.createRS256Signer("xxxxxxxxxx"));
Map<String, jj.TokenSigner> signer = {'RS256': sign};
jj.Encoder encoder = new jj.Encoder(jj.composeTokenSigners(signer));
jj.Jwt jwt = new jj.Jwt.RS256(payload);
encodedJwt = await encoder.convert(jwt);
print(encodedJwt.toString());
}
导入'dart:async';
导入“dart:convert”作为convert;
将“package:just_jwt/just_jwt.dart”作为jj导入;
Future main()异步{
字符串client_email=“xxxxxxx”;
final DateTime issuedAt=new DateTime.now();
final DateTime expiresAt=issuedAt.add(常数持续时间(分钟:30));
String uid=“some uid”;
jj.EncodedJwt EncodedJwt;
映射有效负载={
“iss”:客户的电子邮件,
“sub”:客户的电子邮件,
“澳元”:“xxxxxx”,
“iat”:(发布时间为毫秒秒秒秒/1000)。地板(),
“exp”:(以毫秒/1000.floor()为单位发布)+(60*30),
“uid”:uid,
“索赔”:{}
};
var sign=jj.toTokenSigner(jj.createRS256Signer(“xxxxxxxxx”);
映射签名者={'RS256':sign};
jj.Encoder编码器=新的jj.Encoder(jj.composeTokenSigners(签名者));
jj.Jwt Jwt=新的jj.Jwt.RS256(有效载荷);
encodedJwt=等待编码器转换(jwt);
打印(encodedJwt.toString());
}
解决方案是找到一个jwt库,该库使用RSA对令牌进行签名,RSA似乎是现有库中不太流行的替代方案
pubspec.yaml:
dependencies:
firebase: "4.2.0+1"
just_jwt: "1.3.1"
createCustomToken.dart:
import 'dart:async';
import 'dart:convert' as convert;
import 'package:just_jwt/just_jwt.dart' as jj;
Future main() async {
String client_email = "xxxxxxx";
final DateTime issuedAt = new DateTime.now();
final DateTime expiresAt = issuedAt.add(const Duration(minutes: 30));
String uid = "some-uid";
jj.EncodedJwt encodedJwt;
Map<String, Object> payload = {
"iss": client_email,
"sub": client_email,
"aud": "xxxxxx",
"iat": (issuedAt.millisecondsSinceEpoch / 1000).floor(),
"exp": (issuedAt.millisecondsSinceEpoch / 1000).floor() + (60 * 30),
"uid": uid,
"claims": {}
};
var sign = jj.toTokenSigner(jj.createRS256Signer("xxxxxxxxxx"));
Map<String, jj.TokenSigner> signer = {'RS256': sign};
jj.Encoder encoder = new jj.Encoder(jj.composeTokenSigners(signer));
jj.Jwt jwt = new jj.Jwt.RS256(payload);
encodedJwt = await encoder.convert(jwt);
print(encodedJwt.toString());
}
导入'dart:async';
导入“dart:convert”作为convert;
将“package:just_jwt/just_jwt.dart”作为jj导入;
Future main()异步{
字符串client_email=“xxxxxxx”;
final DateTime issuedAt=new DateTime.now();
final DateTime expiresAt=issuedAt.add(常数持续时间(分钟:30));
String uid=“some uid”;
jj.EncodedJwt EncodedJwt;
映射有效负载={
“iss”:客户的电子邮件,
“sub”:客户的电子邮件,
“澳元”:“xxxxxx”,
“iat”:(发布时间为毫秒秒秒秒/1000)。地板(),
“exp”:(以毫秒/1000.floor()为单位发布)+(60*30),
“uid”:uid,
“索赔”:{}
};
var sign=jj.toTokenSigner(jj.createRS256Signer(“xxxxxxxxx”);
映射签名者={'RS256':sign};
jj.Encoder编码器=新的jj.Encoder(jj.composeTokenSigners(签名者));
jj.Jwt Jwt=新的jj.Jwt.RS256(有效载荷);
encodedJwt=等待编码器转换(jwt);
打印(encodedJwt.toString());
}