@@ -34,6 +34,7 @@ export interface FirstPartyCredentialsSettings {
34
34
[ 'type' ] : 'gapi' ;
35
35
[ 'client' ] : unknown ;
36
36
[ 'sessionIndex' ] : string ;
37
+ [ 'iamToken' ] : string | null ;
37
38
}
38
39
39
40
export interface ProviderCredentialsSettings {
@@ -292,7 +293,11 @@ export class FirstPartyToken implements Token {
292
293
type = 'FirstParty' as TokenType ;
293
294
user = User . FIRST_PARTY ;
294
295
295
- constructor ( private gapi : Gapi , private sessionIndex : string ) { }
296
+ constructor (
297
+ private gapi : Gapi ,
298
+ private sessionIndex : string ,
299
+ private iamToken : string | null
300
+ ) { }
296
301
297
302
get authHeaders ( ) : { [ header : string ] : string } {
298
303
const headers : { [ header : string ] : string } = {
@@ -303,6 +308,9 @@ export class FirstPartyToken implements Token {
303
308
if ( authHeader ) {
304
309
headers [ 'Authorization' ] = authHeader ;
305
310
}
311
+ if ( this . iamToken ) {
312
+ headers [ 'X-Goog-Iam-Authorization-Token' ] = this . iamToken ;
313
+ }
306
314
return headers ;
307
315
}
308
316
}
@@ -313,10 +321,16 @@ export class FirstPartyToken implements Token {
313
321
* to applications hosted by Google.
314
322
*/
315
323
export class FirstPartyCredentialsProvider implements CredentialsProvider {
316
- constructor ( private gapi : Gapi , private sessionIndex : string ) { }
324
+ constructor (
325
+ private gapi : Gapi ,
326
+ private sessionIndex : string ,
327
+ private iamToken : string | null
328
+ ) { }
317
329
318
330
getToken ( ) : Promise < Token | null > {
319
- return Promise . resolve ( new FirstPartyToken ( this . gapi , this . sessionIndex ) ) ;
331
+ return Promise . resolve (
332
+ new FirstPartyToken ( this . gapi , this . sessionIndex , this . iamToken )
333
+ ) ;
320
334
}
321
335
322
336
setChangeListener ( changeListener : CredentialChangeListener ) : void {
@@ -355,7 +369,8 @@ export function makeCredentialsProvider(
355
369
) ;
356
370
return new FirstPartyCredentialsProvider (
357
371
client ,
358
- credentials [ 'sessionIndex' ] || '0'
372
+ credentials [ 'sessionIndex' ] || '0' ,
373
+ credentials [ 'iamToken' ] || null
359
374
) ;
360
375
361
376
case 'provider' :
0 commit comments