fix: wrap service account credentials with GoogleCredentialsClient #727
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The targeting values endpoint (
/admin/api/tenant/{tenant_id}/targeting/values/{key_id}) was returning 500 errors for tenants using service account authentication (like the Weather Company tenant).Root Cause
In PR #723, we added service account authentication support to this endpoint. However, we were passing raw
google.oauth2.service_account.Credentialsdirectly toad_manager.AdManagerClient().The googleads library requires credentials to be wrapped in
oauth2.GoogleCredentialsClientto provide theCreateHttpHeader()method that the GAM API client expects.Error:
Solution
Added the
oauth2.GoogleCredentialsClient(credentials)wrapper, matching the pattern used in:src/services/background_sync_service.py(line 214)src/adapters/gam/auth.py(lines 100, 111)src/adapters/gam/utils/health_check.py(line 86)src/admin/blueprints/gam.py(line 878)Testing
Verified the fix works by:
CreateHttpHeader()error: ✅Impact
🤖 Generated with Claude Code