【问题标题】:Understanding Google Developer Console了解 Google 开发者控制台
【发布时间】:2017-12-10 09:55:03
【问题描述】:

我对开发者控制台的功能有些困惑。

我有一个项目可以访问 youtube 数据 apiv3。我已经创建了我的项目并获得了 4 个密钥:

  1. 浏览器密钥
  2. 服务器密钥
  3. Web 客户端 OAuth2.0 客户端 ID 密钥
  4. Android 密钥

除此之外,前三个是由谷歌服务自动生成的。我通过提供项目的 SHA-1 指纹生成了 android 密钥。我有以下问题,我似乎没有得到回答:

  1. 为什么我会自动生成前三个?我不在后端工作,所以只是出于好奇,如果客户端使用服务器密钥而不是浏览器密钥怎么办?有什么区别吗?

  2. 我猜 SHA-1 用于像公钥加密一样工作。它只依赖于包和开发环境吗?我没有为此使用 keytool,而是直接使用 Studio 中的 SigningReports 功能完成。指纹所依赖的参数究竟是什么?我通过删除调试密钥库创建了新的 SHA-1。 Android Studio 会自动重新生成调试密钥库。此外,这种加密技术究竟是如何工作的?

  3. 我的 iOS 同事无需密钥即可获得访问权和刷新令牌。 AFAIK 对于 OAuth2.0,我们需要获取身份验证令牌,将其与客户端 ID、密钥和 API 密钥一起使用以获取访问权限和刷新令牌。他们是如何做到的?还有秘钥在这里扮演什么角色?

  4. 最重要的是:我的项目中有不同的 API KEY。 google-services.json 中的一个是不同的,在

youTubePlayerFragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener()

不一样!!它仍然有效。怎么样??

【问题讨论】:

  • DownVoters 请提供解释?我认为这是像我这样的菜鸟提出的一个完全有效的问题。我当然不希望从一个人那里获得所有细节,因为它来自各个领域。但您至少可以贡献您所知道的,以便对未来的访问者有所帮助。

标签: android oauth-2.0 cryptography sha1 youtube-data-api


【解决方案1】:

答案 1:

developer console中的Server键和Browser键的区别

服务器密钥:

如果您的应用程序在服务器上运行,请创建并使用服务器密钥。不要在服务器代码之外使用此密钥。例如,不要将其嵌入网页中。为防止配额被盗,请限制您的密钥,以便仅允许来自您服务器的源 IP 地址的请求。

浏览器键:

如果您的应用程序在客户端(例如 Web 浏览器)上运行,请创建并使用浏览器密钥。为防止您的密钥被用于未经授权的网站,请仅允许来自您管理的域的推荐。

答案 2:

它也适用于 keytool 和 SigningReports 功能。

答案 4:

您可以使用多个 api 密钥,当您在 google 开发者控制台中启用了 api 密钥,然后在 projectroot/yourapp/src/debug/AndroidManifest.xml 前的项目中使用 api 密钥时,这是可能的:

<!-- Goolge Maps API Key -->
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="******************" />    

<!-- Google Places API Key -->
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="******************" />   

【讨论】:

  • 我仍然不明白第一个问题的答案,但由于它的优先级较低,我不讨论它。我编辑了我的问题,因为我认为对第二个问题存在误解。至于您对第 4 个问题的回答,我认为 google-services.json 包含与该项目对应的所有 api 的密钥。为什么它只有一个键?
【解决方案2】:

您对 Youtube 的请求是通过 Google Play 服务进行的。您将 OAuth2.0 OAuth2.0 令牌嵌入到您的请求中。 OAuth2.0 令牌进一步携带您特定类型的 Android 密钥。不同的Android键是Server、Browser、Android、IOS等。

OAuth 与您的用户身份验证相关联。 OAuth 进一步携带和 Android Key 让 Google Play 服务——Google Play 服务读取 Google Developer Console 中的信息——来决定哪种特定类型的设备(例如,iso、浏览器、Android)正在询问 Youtube 服务器。

如果您使用的是 Android 设备,则不需要浏览器和服务器密钥。

https://developers.google.com/youtube/android/player/register

【讨论】:

    【解决方案3】:

    如果我错了,请纠正我。

    1. 浏览器键:假设您有一个网站,并且您想从那里访问 使用 youtube API

      服务器密钥:假设您为自己的应用构建了自己的后端 API,并且它 需要使用 Youtube API

      Android Key:假设您还有一个 Android 应用程序,它需要使用 Youtube API

      您可以使用不同的密钥分别跟踪 API 的每个使用者。你 可以互换(不确定),但这只会弄乱跟踪。

    2. SHA 依赖于密钥库(调试/签名),每个系统都有一个唯一的 调试密钥库。您可以创建自己的签名密钥库。

    3. What is the Access Token vs. Access Token Secret and Consumer Key vs. Consumer Secret 我认为适用于任何 oAuth

    4. 那么 Youtube API、Google Map API 或任何其他 API 都是独立的服务。我们需要单独跟踪它们,因此每个消费者的每个服务都有不同的 API_KEY(在 1 中解释)。

    注意:我所说的跟踪是指 API 配额、每秒点击次数等

    【讨论】:

    • 我知道 SHA-1 是独一无二的并且依赖于密钥库,但确切地说,我的问题是它在不同的机器上有何不同。密钥库生成了什么以及它如何用于生成 api 密钥和整个身份验证机制。我听说过 keytool(jre 的一部分)。我也听说过其他工具,如 OpenSSL 和其他工具,但不清楚。请在@shweta porwals 上查看我关于 4 的答案。是的,我后来读到了 3。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多