Android 为什么我不能为同一个包名创建多个OAuth 2.0客户端ID?

Android 为什么我不能为同一个包名创建多个OAuth 2.0客户端ID?,android,oauth,google-play-services,Android,Oauth,Google Play Services,在本教程中,说明了完全可以对同一个包名使用两个OAuth 2.0客户端ID 您应该创建两个客户端ID,一个带有发布证书 指纹和另一个具有调试证书指纹的指纹。制作 请确保对这两个包使用相同的包名。这允许玩游戏 用于识别来自已与签名的链接APK的呼叫的服务 任一证书 所以我遵循上面链接中的教程:首先在开发者控制台中转到游戏服务,添加一个新游戏。然后,我添加了一个与此游戏链接的应用程序,它需要我创建一个OAuth 2.0客户端ID。在使用我的发布密钥的SHA1创建第一个客户端ID后,我找不到任何按钮来

在本教程中,说明了完全可以对同一个包名使用两个OAuth 2.0客户端ID

您应该创建两个客户端ID,一个带有发布证书 指纹和另一个具有调试证书指纹的指纹。制作 请确保对这两个包使用相同的包名。这允许玩游戏 用于识别来自已与签名的链接APK的呼叫的服务 任一证书

所以我遵循上面链接中的教程:首先在开发者控制台中转到游戏服务,添加一个新游戏。然后,我添加了一个与此游戏链接的应用程序,它需要我创建一个OAuth 2.0客户端ID。在使用我的发布密钥的SHA1创建第一个客户端ID后,我找不到任何按钮来创建另一个客户端ID。因此,我转到并发现我可以在这里的API&auth->Credentials下创建第二个客户端ID。我使用debug.keystore的SHA1作为第二个客户机ID。然后我用debug键和release键编译并测试我的示例游戏

但是,在运行应用程序并尝试登录后,结果是仅接受使用第一个客户端ID的发布密钥的应用程序,而不接受使用第二个客户端ID的调试密钥的应用程序

然后,我尝试在Cloud Developer控制台中删除我的发布密钥的客户机ID,以便调试密钥的客户机ID仍然是唯一的客户机ID,并再次测试我的应用程序。这一次,使用调试键的应用程序被接受,而使用释放键的应用程序当然不被接受


那么,这是否意味着我不能为同一个包名创建多个OAuth 2.0客户端ID?

如同一文件中红色警告说明所述:

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

相反,在开发者控制台的游戏服务部分,转到2。链接的应用程序,然后选择链接另一个应用程序,并按照其中的说明操作,给它起一个名称,例如“Game name Debug”,并使用您的调试键SHA1。每隔一个字段应与您的发布应用程序相同。

另一个注意事项:


链接第二个应用程序时,您必须在Google Play services中指定不同的软件包。如果未指定其他包,则不会显示“授权”部分。然后,如果只想使用一个包来不更改清单,则可以在“授权”部分中指定原始包。虽然有点笨重和怪异,但它仍然有效。

伙计,我在这上面呆了一段时间,因为当我链接第二个应用程序时,它没有显示“授权此应用程序”屏幕。如果任何人出现这种情况,只需删除链接的应用程序并重新添加。这里真正的问题是为调试版本指定一个不同的名称,否则它将不会再次显示授权选项!好吧,现在看来这已经不适用了。我试图使用一个虚拟包名链接我的应用程序,以强制出现授权部分。但是,当尝试将程序包名称更改回原始名称时,我看到它已被禁用..:因此,由于包名无法更改,因此没有为同一应用程序添加多个密钥的解决方案?谢谢,这对我很有帮助!正是这一点让我感到困惑,在我添加第二个包名之前,这个阶段是隐藏的。现在看来,这一点不再适用了。我试图使用一个虚拟包名链接我的应用程序,以强制出现授权部分。但是,当尝试将程序包名称更改回原始名称时,我看到它已被禁用..: