每次在Unity中,Social.localUser.Authenticate都返回false

时间:2018-09-03 16:35:39

标签: android unity3d google-play-services google-play-games google-play-console

我正在使用最新版本的GooglePlayGames插件(0.9.50)。我已经从播放控制台添加了Android资源。我还验证了我的SHA-1指纹正确无误。 Google Play控制台中的上传证书的SHA-1指纹与Google开发者控制台中的OAuth 2.0客户端ID相同。 Still Social.localUser.Authenticate每次都返回false。添加测试人员的帐户后,我还尝试过发布Alpha版游戏。 Still.Social.localUser.Authenticate仍返回false。当我通过手机打开游戏时,甚至没有显示Google Play游戏登录中的“绿色”。我没有任何错误或警告。以下是我的代码:

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 :(得分:0)

如果您使用的是Google Play签名,则从Google Play下载的应用中的签名密钥将与上传证书不同。您是否已将Google Play签名中的签名密钥添加到Google Play游戏API配置中? release checklist步骤4“向API提供者注册您的应用签名密钥”中对此进行了说明。

  

如果您的应用程序使用任何API,则通常需要注册Google用来签署您的应用程序的密钥的证书以进行身份​​验证。通常,这是通过证书的指纹完成的。

     

要查找Google用于重新签名APK以便交付的密钥证书:

     
      
  • 登录到您的Play控制台。      
        
    • 选择一个应用。
    •   
    • 在左侧菜单上,单击发布管理>应用签名。
    •   
    • 在此页面上,您可以复制应用程序签名证书中最常见的指纹(MD5,SHA-1和SHA-256)。如果API提供程序要求使用其他类型的指纹,则您还可以下载DER格式的原始证书,并通过API提供程序所需的转换工具运行它。
    •   
  •   

答案 1 :(得分:0)

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

为Authenticate方法提供的回调不是瞬时的 -回调是bool success => {...} lambda表达式。因此,您不能保证在将IsConnectedToGoogleServices返回给调用方之前已执行了回调,该调用方默认情况下设置为false。也许这可能是您的问题?