我正在构建一个 Flutter 应用程序,我希望用户能够通过 Steam 登录 (OpenId)。 该应用程序由 Firebase 提供支持。
我对整个 OpenId 世界还很陌生,我已经阅读过它,但我仍然不明白。
我发现 Firebase 支持 signinWithCustomToken 所以我想我应该获取 Steam OpenId 来获取其中之一。 我还找到了两个可能对我有帮助的软件包,但我也无法让它们工作:
如果尝试使用
openid_client
包中的以下示例:
_authenticate(Uri uri, String clientId, List<String> scopes) async {
try {
var issuer = await Issuer.discover(uri);
var client = Client(issuer, clientId);
print('CLAIMS:');
print(issuer.claimsMap);
urlLauncher(String url) async {
if (await canLaunch(url)) {
await launch(url, forceWebView: true);
} else {
throw 'Could not launch $url';
}
}
var authenticator = Authenticator(client,
scopes: scopes, port: 4000, urlLancher: urlLauncher);
var c = await authenticator.authorize();
closeWebView();
print(await c.getUserInfo());
}catch (err) {
print(err);
}
}
但我不知道该送什么作为
uri
、clientId
和scopes
。
对于uri
我已经尝试过https://steamcommunity.com/openid
但是当我尝试这个时我收到一个错误,它试图Json.parse xml响应。
我还尝试了
steam_login
包here的示例,但这没有任何作用,而且感觉它不应该在 Flutter 应用程序中工作(即使该包声明它与 Flutter 兼容)。
因此,如果有人可以向我解释如何通过工作示例实现这一目标,那就太好了。 如果我让它发挥作用,我计划为其他人创建一个教程/指南。
我也有同样的问题。希望得到一些反馈。