关于开发者控制台功能,我有点困惑.
我有一个项目,我在其中访问youtube数据apiv3.我创建了我的项目并获得了4个键:
>浏览器密钥
>服务器密钥
> Web客户端OAuth2.0客户端ID密钥
> Android密钥
除此之外,前三个是由谷歌服务自动生成的.我通过给出项目的SHA-1指纹生成了android密钥.我有以下问题,我似乎没有得到答案:
>为什么我自动生成前三个?我不在后端工作,所以只是出于好奇,如果客户端使用服务器密钥而不是浏览器密钥?有什么区别?
>我猜SHA-1习惯像公钥加密一样工作.它仅依赖于包和开发环境吗?我没有使用keytool,但直接使用Studio中的SigningReports功能.指纹所依赖的参数究竟是什么?我通过删除调试密钥库创建了新的SHA-1. Android studio会自动重新生成调试密钥库.这个密码学究竟是如何工作的呢?
>我的iOS同事可以在没有密钥的情况下访问和刷新令牌. AFAIK对于OAuth2.0,我们需要获取身份验证令牌,将其与客户端ID,密钥和API密钥一起使用以获取访问权限并刷新令牌.他们如何做到这一点?秘密密钥在这里扮演什么角色?
>最重要的是:我的项目中有不同的API KEYS. google-services.json中的一个与众不同
youTubePlayerFragment.initialize(API_KEY,new YouTubePlayer.OnInitializedListener()
是不同的!!它仍然有效.怎么样??
服务器密钥和浏览器密钥之间的差异来自developer console
服务器密钥:
如果应用程序在服务器上运行,请创建并使用服务器密钥.不要在服务器代码之外使用此密钥.例如,不要将其嵌入网页中.要防止配额被盗,请限制您的密钥,以便仅允许来自服务器的源IP地址的请求.
浏览器键:
如果您的应用程序在客户端(例如Web浏览器)上运行,请创建并使用浏览器密钥.要防止您的密钥在未经授权的网站上使用,请仅允许您管理的域中的引荐.
答案2:
它也适用于keytool和SigningReports功能.
答案4:
您可以使用多个api密钥,并且可以在google开发人员控制台中启用api密钥,然后在projectroot / yourapp / src / debug / AndroidManifest.xml ex中使用项目中的api密钥: