Реализация комплекта учетной записи Huawei Flutter

Я следую этой статье https://forums.developer.huawei.com/forumPortal/en/topic/0204412554756330223, чтобы создать плагин для набора учетных записей HMS. Это ожидаемый результат.

Он должен был выскочить на странице идентификатора huawei после того, как я нажал кнопку входа в систему.

Но он просто остается на странице входа. и выскакивает много журналов, которые я не мог понять.

Это журналы.

      import 'package:flutter/material.dart';
import 'package:huawei_account/huawei_account.dart';
import 'package:sign_in_hms/home.dart';

void main() {
   runApp(MyApp());
 }
  
 class MyApp extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       title: 'AccountKit',
       theme: ThemeData(
         primarySwatch: Colors.blue,
         visualDensity: VisualDensity.adaptivePlatformDensity,
       ),
       home: MyHomePage(title: 'Account Kit'),
     );
   }
 }
  
 class MyHomePage extends StatefulWidget {
   MyHomePage({Key key, this.title}) : super(key: key);
   final String title;
  
   @override
   _MyHomePageState createState() => _MyHomePageState();
 }
  
 class _MyHomePageState extends State<MyHomePage> {
   List<String> logs = [];
  
   @override
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         title: Text(widget.title),
       ),
       body: new Stack(
         fit: StackFit.expand,
         children: <Widget>[
           new Image(
             image: new AssetImage("assets/images/mobile.png"),
             fit: BoxFit.cover,
           ),
           new Form(
               child: new Container(
             padding: const EdgeInsets.all(60.0),
             child: new Column(
               mainAxisAlignment: MainAxisAlignment.center,
               children: [
                 new TextField(
                   decoration: new InputDecoration(
                       labelText: "Enter Email", focusColor: Colors.white),
                   keyboardType: TextInputType.emailAddress,
                 ),
                 new TextField(
                   decoration: new InputDecoration(labelText: "Enter Password"),
                   keyboardType: TextInputType.text,
                 ),
                 new Padding(
                   padding: const EdgeInsets.only(top: 20.0, bottom: 20.0),
                 ),
                 new MaterialButton(
                   minWidth: 100.0,
                   height: 40.0,
                   onPressed: () => {print('object')},
                   color: Colors.red,
                   textColor: Colors.white,
                   child: Text("LOGIN", style: TextStyle(fontSize: 20)),
                 ),
                 new Padding(
                   padding: const EdgeInsets.only(top: 10.0, bottom: 10.0),
                 ),
                 Text(
                   '( OR )',
                   textAlign: TextAlign.center,
                   overflow: TextOverflow.ellipsis,
                   style: TextStyle(
                       fontWeight: FontWeight.bold,
                       color: Colors.white,
                       fontSize: 15),
                 ),
                 new Padding(
                   padding: const EdgeInsets.only(top: 10.0, bottom: 10.0),
                 ),
                 new MaterialButton(
                   child: Text(
                     " HUAWEI SIGN IN",
                     style: TextStyle(fontSize: 20),
                   ),
                   minWidth: 100.0,
                   height: 40.0,
                   onPressed: _onSinIn,
                   color: Colors.red,
                   textColor: Colors.white,
                   padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
                 )
               ],
             ),
           ))
         ],
       ),
     );
   }
  
   void _onSinIn() async {
     AccountAuthParamsHelper authParamHelper = new AccountAuthParamsHelper();
     authParamHelper
       ..setIdToken()
       ..setAuthorizationCode()
       ..setAccessToken()
       ..setProfile()
       ..setEmail()
       ..setScopeList([Scope.openId]);
     try {
       final AuthAccount accountInfo = await AccountAuthService.signIn(authParamHelper);
       setState(() {
         Navigator.push(
           context,
           MaterialPageRoute(
               builder: (context) => Home(accountInfo)),
         );
         _showToast(context);
         logs.add(accountInfo.displayName);
       });
     } on Exception catch (exception) {
       print(exception.toString());
       logs.add(exception.toString());
     }
   }
  
   void _showToast(BuildContext context) {
     final scaffold = Scaffold.of(context);
     scaffold.showSnackBar(
       SnackBar(
         content: const Text('Successfully Loged In'),
         action: SnackBarAction(
             label: 'UNDO', onPressed: scaffold.hideCurrentSnackBar),
       ),
     );
   }
 }

1 ответ

Убедитесь, что конфигурация устройства и облачной конфигурации отпечатка пальца сертификата согласована. Сертификат, упакованный клиентским приложением, совпадает с отпечатком сертификата SHA256, настроенным для приложения на веб-сайте AppGallery Connect.

  1. Убедитесь, что отпечаток сертификата правильно настроен, когда вы подаете заявку на сопутствующие услуги. Откройте файл APK приложения, извлеките из файла каталог META-INF , получите файл CERT.RSA в каталоге и запустите команду keytool -printcert -file META-INF / CERT.RSA для записи информации о сертификате подписи. .

  2. Войдите в AppGallery Connect, щелкните Мои проекты и выберите требуемый проект. На отображаемой странице выберите приложение, перейдите в Настройки проекта> Общая информация и проверьте, совпадает ли значение в отпечатке сертификата SHA-256 со значением на шаге 1.

Кроме того, HMS Core (APK) кэширует файл подписи. Вам необходимо найти HMS Core (APK) на странице приложений вашего устройства и очистить его кеш, перезапустить приложение и снова выполнить предыдущую операцию.

Другие вопросы по тегам