Как я могу использовать Steam (OpenId) для входа в свое приложение Flutter с Firebase? - PullRequest
0 голосов
/ 17 октября 2019

Я создаю приложение Flutter и хочу, чтобы пользователи могли входить через Steam ( OpenId ). Приложение работает на Firebase.

Я довольно новичок во всем мире OpenId, и я прочитал его, но я все еще не понимаю.

Я обнаружил, что Firebase поддерживает signinWithCustomToken поэтому я думаю, что я должен получить Steam OpenId, чтобы получить один из них. Я также нашел два пакета, которые могли бы помочь мне, но я не мог заставить их работать также:

  1. https://pub.dev/packages/openid_client
  2. 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).

Так что, если кто-нибудь может объяснитьмне, как я мог бы достичь этого с рабочим образцом, который был бы великолепен. Если я заставлю это работать, я планирую создать учебник / руководство для других.

...