没有与此客户端 ID 关联的关联应用

Posted

技术标签:

【中文标题】没有与此客户端 ID 关联的关联应用【英文标题】:There is no linked app associated with this client ID 【发布时间】:2013-11-06 12:08:03 【问题描述】:

我对这个越来越疯狂了。我刚刚在 Google Play 商店上发布了一款游戏,该游戏使用了 Google Play 游戏服务。

登录和排行榜/成就在使用调试密钥签名的应用程序中正常工作,但自从我构建和 使用我的发布密钥发布了我的应用程序,Google+ 登录是不可能的。我总是收到臭名昭著的错误 “E/SignInIntentService(25004):没有与此客户端 ID 关联的链接应用程序。”

我对所有内容进行了双重和三重检查:我的应用程序已发布,包名和 SHA1 指纹正确且匹配 我从发布 APK 中提取的内容,我在 Google Play 控制台中多次取消链接并重新链接该应用程序,但没有 有效。

想法,任何人?

谢谢

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。您需要做的就是确保在创建新游戏之前输入与您的发布密钥库匹配的确切包名称和指纹证书 (SHA1)。我的问题是我在游戏中放置了默认指纹,并决定稍后更改。不知何故,即使您将其替换为最终指纹,谷歌控制台开发人员仍然可以检测到您以前的指纹。解决方案是删除第一个游戏配置并创建一个新配置。无需创建或附加调试证书。

【讨论】:

【参考方案2】:

游戏服务是否在 Google Developer Console 中发布?这是一个单独的步骤。

如果您的应用本身未发布(即处于测试阶段),则只有与指定为您的测试人员池的指定 google+ 或 google 群组帐户关联的那些 google 帐户才能连接。

您还需要验证编译到您的应用程序(通常在 /res/strings.xml 中)的 app_id 是否与 google api 控制台 ID 匹配。例如应该有这样一行:

<string name="app_id">123456789123</string>

不要将它与您的 facebook application_id 混淆!

除此之外,您还需要在概览 -> APIs & auth -> Registered apps 下检查 Google Cloud Console,并验证 CLIENT ID 的前缀是否匹配、PACKAGE NAME 是否正确以及 CERTIFICATE FINGERPRINT (SHA1)匹配。

如果这一切都不起作用,那么你将大致处于我目前所处的位置 - 完成了所有这些但仍然卡住。

【讨论】:

好的,我终于解决了我的特殊问题。关键是在另一个 SO 帖子中,我将在这里总结。您的 Oauth2 客户端不能从 Google API 控制台创建,它必须从 Google Play UI 创建。 1. 如果您手动创建了 OAuth2 客户端,请在 Google API 控制台中删除它。 2. 在 Google Play UI 的 Linked Apps 下重新添加您的 Game Services 客户端。如果您已经发布,只需添加另一个。您可以验证它在 Google API 控制台中创建了您的 Oauth2 客户端,然后如果这一切都错了,您的测试人员/应用程序应该可以工作。 这里有同样的问题。但是现在链接的应用程序没有给我添加 SHA1 密钥的选项。这太疯狂了【参考方案3】:

Google Play 服务中存在错误...

不要尝试登录游戏服务,除非你上传第一个APK并在游戏服务中链接游戏(放一个正确的包名是不够的,必须有第一个APK上传,所以在链接过程中你可以从建议列表中选择应用程序).​​..

当您在先链接之前尝试登录时,服务会进入“错误状态”,即使您将游戏分配给服务后,身份验证过程仍然声称它未链接......

我制作了 6 款游戏,遇到过 2 次这个问题。解决方案是删除损坏的游戏服务。创建新的(重新创建整个 CFG - 抱歉),在游戏中重新分配 APP ID,将游戏链接到游戏服务(通过建议列表),然后尝试登录服务...

要小心,因为logcat中也有很多误解的“假”通知......

【讨论】:

您能否更具体地介绍一下流程? “重新创建整个 CFG”是什么意思?如何删除损坏的游戏服务?【参考方案4】:

实际上,我做了所有这些,一切都很好。但是,我在这里阅读并重新阅读了其他一些关于该问题的帖子,发现this comment。 user2267794 帮我搞定了。 由于我刚刚发布了我的游戏,我已经通过调试 OAuth 客户端 ID 删除了,认为它不再需要 - 至少在一段时间内。 在放弃的边缘,出于绝望和没有什么可失去的,我尝试了user2267794 所做的并再次将我的应用程序与我的调试密钥 SHA1 链接。它神奇地立即起作用。无论出于何种原因,在没有调试的情况下使用释放密钥似乎对我不起作用。 如果不是bug,我不知道是什么。

【讨论】:

你是怎么做到的?当我第二次链接我的应用时,我看不到任何输入 SHA1 密钥的可能性。 IIRC,我在“API 访问”部分使用了旧控制台 (link) 所以您没有两次链接应用程序,而是为您的应用程序创建了另一个客户端 ID,这样您就有两个“已安装应用程序的客户端 ID”?我也是这样做的,但不幸的是没有成功。我有两个“已安装应用程序的客户端 ID”:一个带有调试 SHA1 指纹,另一个带有真正的 SHA1 指纹,但是当我的应用程序尝试登录时它不起作用。见here。 实际上,我的应用被链接了 四次(是的,具有相同的包名称和 ID)。那是因为我尝试了任何事情,就像你和许多其他人一样,直到它出于某种神秘的原因而奏效。而且我无法删除额外的链接,但我太害怕破坏某些东西。我知道这对你没有帮助,但我可以告诉你:我确信这个谷歌功能已经坏了,但谷歌不会蹲下,除非你是 Rovio 或 King。我们都做了解释并且失败了,直到它起作用。删除所有内容,然后重试。 问题是我已经发布了应用程序。这意味着我无法删除链接的应用程序。我只能一次又一次地添加同一个应用程序(最多 20 次)。但是在this page,我无法告诉Google 我的客户ID 应该是哪个链接应用程序。这是因为该应用程序出现here 仍然作为一个项目。顺便问一下,here 应该打开哪些 API?我从来没有手动改变过任何东西。【参考方案5】:

我尝试链接一个新应用,但它不起作用,几乎要重新开始创建新应用的过程。但是,我尝试从 Google APIs Console 重新生成 API 密钥,并且成功了!

转到凭据,选择您的 API 密钥,然后单击“重新生成密钥”。

【讨论】:

【参考方案6】:

只是为了帮助别人-

在实施 Google Play 服务时请牢记这一点:

警告:不要从 Google 为您的游戏创建新的客户端 ID API 控制台。如果您这样做,Google Play 游戏服务将不会 将您的游戏设置与客户端 ID 相关联,这可能会导致 游戏过程中的错误。

【讨论】:

以上是关于没有与此客户端 ID 关联的关联应用的主要内容,如果未能解决你的问题,请参考以下文章

Rails 关联:创建特定于客户的订单

entityframework 已经有一个与此命令关联的打开的 DataReader 必须先关闭

错误:已经有一个与此命令关联的打开DataReader,必须先关闭它。多个用户

Powershell 脚本安装与 ID 列表关联的 Windows 更新

从一个表中选择与客户关联的工单记录或另一表中的客户子项

R:Apriori 算法没有找到任何关联规则