为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?
Posted
技术标签:
【中文标题】为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?【英文标题】:Why can't I create multiple OAuth 2.0 client IDs for the same package name?为什么我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID? 【发布时间】:2014-03-20 21:31:02 【问题描述】:在教程here 中,声明完全可以将两个 OAuth 2.0 客户端 ID 用于同一个包名称。
您应该创建两个客户端 ID,一个带有发布证书 指纹和另一个带有调试证书指纹的指纹。制作 确保两者使用相同的包名称。这允许玩游戏 识别来自您链接的 APK 的调用的服务 任一证书
所以我按照上面链接中的教程进行操作:首先转到Developer Console
中的Game Service
,Add a new Game
。然后我在这个游戏中添加了一个Linked app
,它需要我创建一个 OAuth 2.0 客户端 ID。使用我的发布密钥的 SHA1 创建第一个客户端 ID 后,我找不到任何按钮来创建另一个客户端 ID。所以我去Cloud Developer Console,发现我可以在APIs & auth
->Credentials
下创建第二个客户端ID。我使用我的 debug.keystore
的 SHA1 作为第二个客户端 ID。然后我使用调试密钥和发布密钥编译和测试我的示例游戏。
但是,在运行应用并尝试登录后,结果是只接受使用发布密钥(使用第一个客户端 ID)的应用,而使用调试密钥(使用第二个客户端 ID)的应用) 不被接受。
然后我尝试在 Cloud Developer Console 中删除我的发布密钥的客户端 ID(以便调试密钥的客户端 ID 仍然是那里的唯一客户端 ID)并再次测试我的应用程序。这次接受了使用debug key的app,当然不接受使用release key的app了。
这是否意味着我不能为同一个包名创建多个 OAuth 2.0 客户端 ID?
【问题讨论】:
【参考方案1】:正如同一tutorial 中的红色警告说明中所述:
警告:不要从 Google Developers Console 为您的游戏创建新的客户端 ID。如果您这样做,Play 游戏服务不会将您的游戏设置与客户端 ID 相关联,这可能会导致游戏过程中出现错误。
相反,在开发者控制台的游戏服务部分,转到 2. Linked Apps
并选择 Link another app
并按照那里的指示,给它一个名称,例如“游戏名称调试”并使用您的调试密钥 SHA1(每个其他字段应与您的发布应用相同)。
【讨论】:
伙计,我被困了一段时间,因为当我链接第二个应用程序时,它没有显示“授权这个应用程序”屏幕。如果有人遇到这种情况,只需删除链接的应用程序并重新添加。 这里真实的是给debug版本起一个不同的名字,不然就不会再显示“授权”选项了! 好吧,现在看来这不再适用了。我尝试使用虚拟包名称链接我的应用程序,以强制出现“授权”部分。但是,当尝试将包名称更改回原来的名称时,我看到它已被禁用.. :( 那么既然包名不能改,那么同一个app添加多个key就没有办法了吗?【参考方案2】:补充说明:
链接第二个应用时,您必须在 Google Play 服务中指定不同的包。如果您不指定不同的包,则不会出现“授权”部分。然后,在授权部分中,您可以指定原始包(如果您只想使用一个包来不更改清单)。有点麻烦和奇怪,但它确实有效。
【讨论】:
谢谢,这对我有帮助!正是这一点让我感到困惑,在我添加第二个包名称之前,该阶段是隐藏的。 好吧,现在看来这不再适用了。我尝试使用虚拟包名称链接我的应用程序,以强制出现“授权”部分。但是,当尝试将包名称更改回原来的名称时,我看到它已被禁用.. :(以上是关于为啥我不能为同一个包名称创建多个 OAuth 2.0 客户端 ID?的主要内容,如果未能解决你的问题,请参考以下文章
使用 OAuth 2.0 客户端 ID 为不同项目创建一个或多个凭据?