Как интегрировать набор учетных записей Huawei

#unity3d #huawei-mobile-services #huawei-account

#unity3d #huawei-мобильные сервисы #huawei-учетная запись

Вопрос:

В настоящее время я использую плагин Huawei от EvilMindDev.

Ниже приведен сценарий AccountManager.

 using HuaweiMobileServices.Id;
using HuaweiMobileServices.Utils;
using System;
using UnityEngine;

namespace HmsPlugin
{
    public class AccountManager : MonoBehaviour
    {

    public static AccountManager GetInstance(string name = "AccountManager") => GameObject.Find(name).GetComponent<AccountManager>();

    private static HuaweiIdAuthService DefaultAuthService
    {
        get
        {
            Debug.Log("[HMS]: GET AUTH");
            var authParams = new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM).SetIdToken().CreateParams();
            Debug.Log("[HMS]: AUTHPARAMS AUTHSERVICE"   authParams);
            var result = HuaweiIdAuthManager.GetService(authParams);
            Debug.Log("[HMS]: RESULT AUTHSERVICE"  result);
            return resu<
        }
    }

    public AuthHuaweiId HuaweiId { get; private set; }
    public Action<AuthHuaweiId> OnSignInSuccess { get; set; }
    public Action<HMSException> OnSignInFailed { get; set; }

    private HuaweiIdAuthService authService;

    // Start is called before the first frame update
    void Awake()
    {
        Debug.Log("[HMS]: AWAKE AUTHSERVICE");
        authService = DefaultAuthService;
        Debug.Log("DefaultAuthService : " DefaultAuthService);
        Debug.Log("authService : " authService);
    }

    public void SignIn()
    {
        Debug.Log("[HMS]: Sign in "   authService);
        authService.StartSignIn((authId) =>
        {
            HuaweiId = authId;
            Debug.Log("HuaweiId : " HuaweiId);
            OnSignInSuccess?.Invoke(authId);
        }, (error) =>
        {
            HuaweiId = null;
            OnSignInFailed?.Invoke(error);
        });
    }

    public void SignOut()
    {
        Debug.Log("authService.SignOut");
        authService.SignOut();
        HuaweiId = null;
    }
}
}
  

Ниже приведен сценарий входа в учетную запись.

 using HuaweiMobileServices.Id;
using HuaweiMobileServices.Utils;
using UnityEngine;
using UnityEngine.UI;
using HmsPlugin;
public class AccountSignIn : MonoBehaviour
{

private const string NOT_LOGGED_IN = "No user logged in";
private const string LOGGED_IN = "{0} is logged in";
private const string LOGIN_ERROR = "Error or cancelled login";

private Text loggedInUser;
private AccountManager accountManager;

// Start is called before the first frame update
void Start()
{
    loggedInUser = GameObject.Find("LoggedUserText").GetComponent<Text>();
    loggedInUser.text = NOT_LOGGED_IN;

    //accountManager = AccountManager.GetInstance();
    accountManager = GetComponent<AccountManager>();
    accountManager.OnSignInSuccess = OnLoginSuccess;
    accountManager.OnSignInFailed = OnLoginFailure;
    LogIn();
}

public void LogIn()
{
    accountManager.SignIn();
}

public void LogOut()
{
    accountManager.SignOut();
    loggedInUser.text = NOT_LOGGED_IN;
}

public void OnLoginSuccess(AuthHuaweiId authHuaweiId)
{
    loggedInUser.text = string.Format(LOGGED_IN, authHuaweiId.DisplayName);
}

public void OnLoginFailure(HMSException error)
{
    loggedInUser.text = LOGIN_ERROR;
}
}
  

Каждый раз, когда я пытаюсь войти, это выдает мне эту ошибку.
Это HuaweiIdAuthService.

Даже если я попробую использовать предоставленную демонстрационную версию, я получу ту же ошибку. Если я попытаюсь выполнить отладку с помощью Android Studio, это все равно выдаст мне ту же ошибку.

 public void SignIn()
{
    Debug.Log("[HMS]: Sign in "   authService);
    authService.StartSignIn((authId) =>
    {
        HuaweiId = authId;
        Debug.Log("HuaweiId : " HuaweiId);
        OnSignInSuccess?.Invoke(authId);
    }, (error) =>
    {
        HuaweiId = null;
        OnSignInFailed?.Invoke(error);
    });
}
  

служба аутентификации ничего не возвращает. Откуда я могу это получить?

Ответ №1:

Это нулевой указатель. Пожалуйста, проверьте наличие неназначенных объектов. Если вы ничего не можете найти, пожалуйста, удалите проект и установите снова, потому что иногда такие вещи происходят.

Комментарии:

1. Вы имеете в виду, что мне нужно переустановить плагин huawei? Кроме того, вы знаете, где я могу получить AuthService?

2. @SyedBob Да. Служба аутентификации здесь .

3. Я уже много раз переустанавливал этот плагин. Но я все равно получаю ту же ошибку. Чего я не понимаю, так это почему в демо-версии также возникает та же ошибка? Этот плагин все еще можно использовать? github.com/EvilMindDevs/hms-unity-plugin Я использую Unity 2020 hms-unity-plugin версии V1.1.2

Ответ №2:

У этого плагина есть 2 ветки для Unity 2019 и Unity 2018.

  1. Вы должны активировать API набора учетных записей в Huawei Appgallery
  2. Проверьте файл конфигурации AndroidManifest
  3. Проверьте файл Agconnect-service.json