Class: GoogleApiService

Inherits:
Object
  • Object
show all
Defined in:
app/services/google_api_service.rb

Constant Summary collapse

CLIENT_ID =
Rails.application.credentials.firebase_client_id

Class Method Summary collapse

Class Method Details

.user_data(access_token:) ⇒ Object

Raises:

  • (StandardError)


18
19
20
21
22
23
24
25
26
# File 'app/services/google_api_service.rb', line 18

def user_data(access_token:)
  response = Faraday.get(
    'https://www.googleapis.com/oauth2/v3/userinfo',
    access_token: access_token
  )
  raise StandardError, 'Google API request failed' unless response.success?

  JSON.parse(response.body)
end

.verify_id_token(id_token:) ⇒ Object

Raises:

  • (StandardError)


5
6
7
8
9
10
11
12
13
14
15
16
# File 'app/services/google_api_service.rb', line 5

def verify_id_token(id_token:)
  response = Faraday.get(
    'https://oauth2.googleapis.com/tokeninfo',
    id_token: id_token
  )
  raise StandardError, 'Google API request failed' unless response.success?

  response_body = JSON.parse(response.body)
  raise ::UnexpectedTokenError, "Invalid Google ID token, expected #{CLIENT_ID}, got: #{response_body['aud']}" if response_body['aud'] != CLIENT_ID

  response_body
end