2017-07-06 135 views
5

我对开发者控制台的功能有点困惑。了解Google开发者控制台

我有一个项目,在其中访问YouTube数据apiv3。我创建了我的项目,得到了4个按键:

  1. 浏览器主要
  2. 服务器密钥
  3. Web客户端的OAuth2.0客户端ID保密密钥
  4. Android的重点

离开这里,前三个是通过谷歌服务自动生成的。我生成给予project.I的SHA-1指纹的Android按键有我似乎并没有得到回答下列问题:

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

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

  3. 我的iOS同事能够在没有密钥的情况下访问和刷新标记。 AFAIK对于OAuth2.0,我们需要获取身份验证令牌,将其与客户端ID,密钥和API密钥一起使用以获取访问权限和刷新令牌。他们如何执行此操作?密钥在这里扮演什么角色?

  4. 最重要的是:我在我的项目中有不同的API键。一个在谷歌,services.json是不同的,在

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

是不同的!不过它的工作原理如何?

+1

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

回答

1

回答1:

developer console

服务器密钥服务器密钥和浏览器键的区别:

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

浏览器键:

创建,如果您的应用程序在客户端上运行,如网络浏览器使用浏览器密钥。为防止您的密钥在未经授权的网站上使用,请仅允许您管理的域名进行推荐。

答2:

它将与密钥工具和SigningReports功能工作了。

答4:

您可以使用多个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="******************" /> 
+0

我仍然不明白第一个问题的答案,但由于它没有优先级,我不讨论它。我编辑了我的问题,因为我认为在第二个问题上存在误解。至于你对第四个问题的回答,我认为google-services.json包含了对应于该项目的所有apis的密钥。为什么它只有一个键? –

1

您对Youtube的请求通过Google Play服务进行。您将OAuth2.0 OAuth2.0令牌嵌入到您的请求中。 OAuth2.0令牌还包含您特定类型的Android密钥。不同的Android密钥是服务器,浏览器,Android,IOS

OAuth与您的用户身份验证相关联。 OAuth进一步携带和Android密钥为Google Play服务 - Google Play服务在Google Developer Console中读取信息 - 决定哪种特定类型的设备(例如iso,浏览器,Android)要求Youtube服务器。

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

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

1

纠正我,如果我错了。

  1. 浏览器键:可以说,你有一个网站,并从那里要 消耗的YouTube API

    服务器密钥:比方说,你建立你自己的后端API为您的应用程序,它 需要消耗的Youtube API

    Android的重点:假设你也有一个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,谷歌地图API或任何其他API是独立的服务。我们需要分别跟踪它们,因此我们为每个消费者提供不同的API_KEY服务(在1中解释)。

注:跟踪我的意思是像API配额,每秒命中等

+0

据我所知,SHA-1是独一无二的,取决于密钥库,但具体而言,我的问题是它在不同的机器上有何不同。密钥库生成的内容以及它如何用于生成api密钥和整个身份验证机制。我听说过keytool(jre的一部分)。我也听说过其他工具,如OpenSSL和其他工具,但没有明确的想法。请看我对@shweta porwals关于4的回答的评论。是的,我后来阅读了关于3.谢谢 –