Unity Play 游戏无法进行身份验证

Posted

技术标签:

【中文标题】Unity Play 游戏无法进行身份验证【英文标题】:Unity Play Games can't authenticate 【发布时间】:2019-07-29 06:32:59 【问题描述】:

我对玩游戏服务和统一性有疑问。 我已经按照文档完成了所有工作。我是一名测试人员,允许进行测试,并且我已将 api 控制台中的 sha1 更改为应用程序使用的那个。我正在使用文档和示例中的代码,所以这里是一个简短的:

PlayGamesClientConfiguration conf = new PlayGamesClientConfiguration.Builder().Build();
PlayGamesPlatform.InitializeInstance(conf);
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();

Debug.Log("Authenticating...");
Social.localUser.Authenticate((bool success) =>

    if (success)
    
        Debug.Log("Welcome " + Social.localUser.userName);
    
    else
    
        Debug.Log("Authentication failed.");
    
);

当我在开发模式下构建应用程序时,Play 游戏弹出窗口出现,开始加载并消失,并给我一个身份验证失败消息。但是,当我在没有开发模式的情况下构建应用程序时,什么也没有发生,并且我立即收到身份验证失败消息。是的,我是正确的 sha1 密钥。

请帮帮我

【问题讨论】:

你让它工作了吗?只要您正确进行了测试设置,我认为发布它不会有任何影响。以下是他们在发布后给您的说明:“取消发布会使您的客户无法使用 Google Play 游戏服务。Google Play 游戏服务仍可用于测试。”我发现可能会影响这一点的一件事是游戏服务控制台中链接应用程序下的Anti-Piracy。我试过关闭它,但到目前为止还没有成功。如果不确定需要多长时间才能进行这些更改,则很难进行故障排除。 我说这一切假设您仔细检查您的证书是否匹配,以了解“上传证书”和“应用程序签名证书”之间的差异。这些似乎是这个问题的主要原因,但在我的情况下不是。也许我只需要等待,如果你成功了,请告诉我..也许我有不同的问题。 更新:即使我有游戏商店证书和开发证书的应用程序,它仍然无法正常工作。他们都没有工作i.imgur.com/pQZCQfX.png 我注意到你的应用名称旁边有Development 标签,我的没有。 TBH 我不确定这意味着什么,您是否将开发版本上传到 Play 管理中心? (AFAIK 这是不可能的,但不完全确定)。您的应用是否处于内部测试轨道? 我已链接该应用两次。一旦将应用签名证书设置为所有用户的默认设置,其他用户用于开发。 【参考方案1】:

我做了很多事情,终于让它工作了。我不确定他们是否都为解决这个问题做出了贡献,所以在这里我将列出我所做的,从最大到最小的对它们的相关性的猜测:

    匹配 SHA-1 证书。如果您使用的是从 Play 商店下载的应用程序,请使用“应用程序签名证书”,否则使用上传证书。这些可以在 Play Console 中的 YourApp/Release Management/App Signing 下找到。请注意,如果您是从 Unity 直接构建到您的设备,您应该确保您正在使用用于上传到 Google Play 的相同密钥进行构建。更多信息here

    如果您使用自定义配置并请求 .RequestServerAuthCode(false) 之类的内容,则必须创建一个额外的 Web 应用程序。转到您的控制台项目,在create credentials 下选择OAuth client ID,然后选择Web App

    如果使用内部测试,请确保在 Play 控制台中的 Game Services/Your App/Testing 下授权帐户。

    尝试在 Play 控制台中的游戏服务/您的应用/链接的应用/您的应用下禁用反盗版。仅当您在 Google Play 之外测试应用程序时才执行此操作。我认为如果您使用经过验证的测试帐户登录,这并不重要。

编辑:即使是测试也需要发布游戏服务。至少我似乎是这样才能让它工作的。

    尝试清除设备上应用的缓存,我又遇到了这个问题,这为我解决了。

我终于认为我已经把它修好了.. 将近一个月后。 :o 希望这会有所帮助。

【讨论】:

我正在使用PlayGamesClientConfiguration conf = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(conf); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate();,并且我已经完成了您之前所说的一切,但仍然无法正常工作。 imgur.com/a/jfclWG5 我又搞砸了,它停止了工作:(。如果我能再次修复它,我会告诉你的。也许这次我可以找到解决方案。请告诉我如果你也找到了解决办法。 好的,我又让它工作了。事实证明,即使是为了测试也需要发布你的游戏服务。至少看起来是这样。如果您已经发布了它但仍然无法正常工作,那么我唯一可以建议的另一件事是三重检查您的证书是否匹配;因为这似乎是大多数人的问题。 我已经检查过,它们匹配 有人可以帮我吗?它仍然无法正常工作。我正在考虑从 google play 中删除整个应用程序并重新执行所有操作。【参考方案2】:

Google 服务可以与您的应用分开发布/取消发布。 执行以下操作检查它们是否正确发布:

    Google Play 控制台 游戏服务 选择您的游戏 发布

检查游戏服务是否已发布。

【讨论】:

我感到很惭愧。我认为测试意味着我可以在不发布应用程序的情况下测试应用程序,但我错了。谢谢 你可以。您只需将其发布到内部轨道(“Open Beta”或“Closed Alpha”)。即使您发布应用供内部使用,我认为您仍然需要单独发布“游戏服务”才能登录、使用排行榜等。 很奇怪。我确实在 7 小时前发布了游戏服务,但它仍然无法正常工作

以上是关于Unity Play 游戏无法进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏无法在 Android 中进行身份验证

Unity Google Play 游戏插件 - 登录/身份验证不起作用

使用 Google Play 游戏进行 Firebase 身份验证

如何将 Google Play 游戏登录与 Firebase 身份验证结合使用

使用 Google Apps 帐户登录时,在 Android 上对 Google Play 游戏服务进行身份验证会导致错误

通过 Firebase 身份验证使用 Google Play 游戏