credential broker: Play tokens from POST /api/google/token (cached, single flight, local key fallback), grants and APIs per package in validate, Play write preflight, apps check and the desktop Accounts view; Google 403 names the API or grant, no retry
This commit is contained in:
parent
304407e523
commit
2c5e30090f
27 changed files with 1145 additions and 43 deletions
|
|
@ -1,7 +1,6 @@
|
|||
// Small client for the other Google APIs storebound reads with the same Play service account: the Play Developer
|
||||
// Reporting API (vitals) and Cloud Storage (Play statistics exports). Read-only callers; retries 429 / 5xx.
|
||||
import { playServiceAccount } from '../lib/credentials';
|
||||
import { tokenSource } from '../lib/google-auth';
|
||||
import { playToken } from '../lib/google-auth';
|
||||
import { errorBody } from '../lib/http';
|
||||
import { noteGoogle } from '../lib/quota';
|
||||
import * as rt from '../lib/rt';
|
||||
|
|
@ -9,7 +8,8 @@ import * as rt from '../lib/rt';
|
|||
export const REPORTING_API = 'https://playdeveloperreporting.googleapis.com/v1beta1';
|
||||
|
||||
export function googleClient(root: string, scope: string) {
|
||||
const token = tokenSource(playServiceAccount(root), scope);
|
||||
// the credential broker when it hands out this scope, else the local service account key
|
||||
const token = playToken(root, scope);
|
||||
async function send(method: string, url: string, body?: unknown): Promise<Response> {
|
||||
for (let attempt = 0; ; attempt++) {
|
||||
const r = await fetch(url, { method, headers: { Authorization: 'Bearer ' + (await token()), ...(body === undefined ? {} : { 'Content-Type': 'application/json' }) },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue