如何集成华为帐号套件 [英] How to Integrate Huawei Account kit

查看:36
本文介绍了如何集成华为帐号套件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前我正在使用 EvilMindDev 的华为插件.

Currently I'm using Huawei Plugin From EvilMindDev.

下面是 AccountManager 脚本.

Below is AccountManager script.

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 result;
        }
    }

    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;
    }
}
}

以下是 AccountSignIn 脚本.

Below is AccountSignIn script.

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.

Everytime I try to SignIn it will give me this error. This is HuaweiIdAuthService.

即使我尝试提供的演示也会给我同样的错误.如果我尝试使用 Android Studio 进行调试,它仍然会给我同样的错误.

Even if I try the demo provided will give me the same error. If I try debug using Android Studio it will still give me the same error.

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);
    });
}

authService 不返回任何内容.我可以从哪里得到它?

the authService doesn't return anything. Where can I get that from ?

推荐答案

这个插件有 2 个分支用于 Unity 2019 和 Unity 2018.

This plugin have 2 branch for Unity 2019 and Unity 2018.

  1. 您应该在华为应用程序库中激活Account Kit API
  2. 检查配置 AndroidManifest 文件
  3. 检查 Agconnect-service.json 文件

这篇关于如何集成华为帐号套件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆