title: Understanding Google Developer Console
body: <p>I am a little confused regarding developer console functioning.</p>
  
  <p>I have a project in which I access youtube data apiv3. I have created my project and got 4 keys:</p>
  
  <ol>
  <li>Browser Key</li>
  <li>Server Key</li>
  <li>Web Client OAuth2.0 Client ID Secret Key </li>
  <li>Android Key</li>
  </ol>
  
  <p>Out of this, first three are autogenerated by google service. I generated android key by giving SHA-1 fingerprint of project.I have following questions which I don't seem to get answered:</p>
  
  <ol>
  <li><p>Why do I get first three auto-generated? I don't work on backends so just out of curiousity what if client uses server key instead of browser key? Any difference?</p></li>
  <li><p>I guess SHA-1 is used to work like public key cryptography. Does it depend only on package and development environment? I have not used keytool for this but done directly with SigningReports functionality in Studio. What exactly are the parameters on which fingerprint depends? I created new SHA-1 by deleting debug keystore. Android studio automatically regenerates debug keystore. Also how exactly does this cryptography work?</p></li>
  <li><p>My iOS colleague is able to get access and refresh tokens without secret key. AFAIK For OAuth2.0 we need to get auth token, use it with client id,secret key and API key to get access and refresh token.How do they do it? Also what role does secret key play here?</p></li>
  <li><p>Most importantly: I have different API KEYS in my project. One in google-services.json is different and in </p></li>
  </ol>
  
  <p>youTubePlayerFragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener()</p>
  
  <p>is different!! Still it works. How??</p>