Я создаю приложение Flutter и хочу, чтобы пользователи могли входить через Steam ( OpenId ). Приложение работает на Firebase.
Я довольно новичок во всем мире OpenId, и я прочитал его, но я все еще не понимаю.
Я обнаружил, что Firebase поддерживает signinWithCustomToken поэтому я думаю, что я должен получить Steam OpenId, чтобы получить один из них. Я также нашел два пакета, которые могли бы помочь мне, но я не мог заставить их работать также:
- https://pub.dev/packages/openid_client
- https://pub.dev/packages/steam_login
Если попробовал следующий образец из пакета 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
пакет здесь , но это ничего не делает и не чувствует, что оно должно работать в приложении Flutter (даже если пакет заявляет, что оно совместимо с Flutter).
Так что, если кто-нибудь может объяснитьмне, как я мог бы достичь этого с рабочим образцом, который был бы великолепен. Если я заставлю это работать, я планирую создать учебник / руководство для других.