Social.localUser.Authenticate возвращает false каждый раз в Unity - PullRequest
0 голосов
/ 03 сентября 2018

Я использую последнюю версию плагина GooglePlayGames (0.9.50). Я добавил ресурсы Android из игровой консоли. Я также проверил, что мой отпечаток SHA-1 правильный. Отпечаток SHA-1 сертификата загрузки в консоли Google Play и идентификатор клиента OAuth 2.0 в консоли разработчика Google совпадают. Все еще Social.localUser.Authenticate возвращает false каждый раз. Я также попытался опубликовать свою игру в альфа-версии после добавления учетных записей тестера. Все еще Social.localUser.Authenticate вернул false. Когда я открываю игру со своего телефона, даже не отображается "зеленая вещь" при входе в Google Play Games. У меня нет никаких ошибок или предупреждений. Вот мой код:

using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine;
using UnityEngine.SocialPlatforms;
using GooglePlayGames;

public class Playgames : MonoBehaviour {

public bool IsConnectedToGoogleServices { set; get; }

// Use this for initialization
void Start () {
    #if (UNITY_ANDROID || (UNITY_IPHONE && !NO_GPGS))
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.DebugLogEnabled = true;
    PlayGamesPlatform.Activate();
    #endif

    SignIn();
}

public bool SignIn()
{
    if (!IsConnectedToGoogleServices) {
        Social.localUser.Authenticate ((bool success) => {
            IsConnectedToGoogleServices = success;
            Debug.Log("Sign-in " + success.ToString() );
        });
    }
    return IsConnectedToGoogleServices;
}
}

Может кто-нибудь помочь мне исправить это? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2019
public bool SignIn()
{
    if (!IsConnectedToGoogleServices) {
        Social.localUser.Authenticate ((bool success) => {
            IsConnectedToGoogleServices = success;
            Debug.Log("Sign-in " + success.ToString() );
        });
    }
    return IsConnectedToGoogleServices;
}

Предоставленный обратный вызов для метода Authenticate - , а не мгновенный - обратный вызов - bool success => {...} лямбда-выражение. Таким образом, вы не можете гарантировать, что обратный вызов будет выполнен перед возвратом IsConnectedToGoogleServices вызывающей стороне, которая по умолчанию установлена ​​на false. Возможно, это может быть вашей проблемой?

0 голосов
/ 04 сентября 2018

Если вы используете Google Play Signing, ключ подписи в приложении, загруженном из Google Play, не будет совпадать с сертификатом загрузки. Вы добавили ключ подписи из Google Play Signing в конфигурацию API Google Play Games? Это описано в контрольном списке выпуска шаг 4 «Зарегистрируйте ключ подписи приложения у провайдеров API».

Если ваше приложение использует какой-либо API, вам обычно нужно зарегистрировать сертификат ключа, с которым Google подписывает ваше приложение в целях аутентификации. Обычно это делается с помощью отпечатка пальца сертификата.

Чтобы найти сертификат ключа, который Google использует для повторной подписи вашего APK для доставки:

  • Войдите в свою игровую консоль.
    • Выберите приложение.
    • В левом меню выберите Управление релизами> Подписание приложения.
    • На этой странице вы можете скопировать наиболее распространенные отпечатки пальцев (MD5, SHA-1 и SHA-256) сертификата подписи вашего приложения. Если провайдеру API требуется другой тип отпечатка пальца, вы также можете загрузить исходный сертификат в формате DER и запустить его с помощью инструментов преобразования, которые требуются провайдеру API.
...