了解Google Developer Console

Rus*_*ker 5 android cryptography sha1 oauth-2.0 youtube-data-api

关于开发者控制台功能,我有点困惑.

我有一个项目,我在其中访问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 KEYS.google-services.json中的一个与众不同

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

是不同的!!它仍然有效.怎么样??

小智 1

答案1:

开发者控制台中服务器密钥和浏览器密钥之间的区别

服务器密钥:

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

浏览器键:

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

答案2:

它也可以与 keytool 和 SigningReports 功能一起使用。

答案4:

您可以使用多个 api 密钥,并且当您在 google 开发者控制台中启用 api 密钥时可以使用多个 api 密钥,然后在您的项目中使用 api 密钥,例如projectroot/yourapp/src/debug/AndroidManifest.xml

<!-- 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="******************" />   
Run Code Online (Sandbox Code Playgroud)