Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
hwellmann committed Sep 15, 2024
1 parent 4251c6d commit bdc19a6
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 73 deletions.
5 changes: 4 additions & 1 deletion src/@types/gsi/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@ declare namespace google.accounts.oauth2 {
export function revoke(token: string): void;

}
interface OverridableTokenClientConfig {
login_hint?: string
}

interface TokenClient {
callback: (response: TokenResponse) => void;
requestAccessToken(): void;
requestAccessToken(config?: OverridableTokenClientConfig): void;
}

interface TokenResponse {
Expand Down
21 changes: 15 additions & 6 deletions src/lib/google-sign-in/lib/services/google-access-token.service.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Injectable } from '@angular/core';
import { forkJoin, ReplaySubject } from 'rxjs';
import { GoogleApiLoaderService } from './google-api-loader.service';
import { GoogleSignInService } from './google-sign-in.service';

const ACCESS_TOKEN = 'accessToken';
const ACCESS_TOKEN_REFRESH = 'accessTokenRefresh';
const PREFERRED_ACCOUNT = 'preferredAccount';

@Injectable()
export class GoogleAccessTokenService {
Expand All @@ -14,10 +14,8 @@ export class GoogleAccessTokenService {

readonly accessTokenSource = new ReplaySubject<string>(1);

constructor(private googleApiLoader: GoogleApiLoaderService,
private googleSignInService: GoogleSignInService
) {
forkJoin([this.googleApiLoader.onClientLoaded()]).subscribe(([client]) => this.checkStoredAccessToken(client));
constructor(private googleApiLoader: GoogleApiLoaderService) {
this.googleApiLoader.onClientLoaded().subscribe((client) => this.checkStoredAccessToken(client));
}
private checkStoredAccessToken(client: TokenClient): void {
this.tokenClient = client;
Expand Down Expand Up @@ -54,7 +52,7 @@ export class GoogleAccessTokenService {
client.callback = (response) => {
resolve(this.handleAccessToken(response));
};
client.requestAccessToken();
client.requestAccessToken({login_hint: localStorage.getItem(PREFERRED_ACCOUNT)});
});
}
});
Expand All @@ -69,6 +67,17 @@ export class GoogleAccessTokenService {
localStorage.setItem(ACCESS_TOKEN, this.accessToken);
localStorage.setItem(ACCESS_TOKEN_REFRESH, (new Date().getTime() + refreshDuration).toString());

const preferredAccount = localStorage.getItem(PREFERRED_ACCOUNT);
if (!preferredAccount) {
fetch('https://oauth2.googleapis.com/tokeninfo?access_token=' + this.accessToken)
.then(resp => resp.json())
.then(json => {
if (json.email) {
localStorage.setItem(PREFERRED_ACCOUNT, json.email);
}
})
}

this.accessTokenSource.next(this.accessToken);
return this.accessToken;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { Inject, Injectable, InjectionToken } from '@angular/core';
import { forkJoin, Observable, ReplaySubject } from 'rxjs';
import { GoogleApiClientConfig } from '../config/google-api.config';
import { GoogleSignInLoaderService } from './google-sign-in-loader.service';
import { GoogleSignInService } from './google-sign-in.service';

export const GSI_CONFIG: InjectionToken<GoogleApiClientConfig> =
new InjectionToken<GoogleApiClientConfig>('gsi.config');
Expand All @@ -20,16 +19,14 @@ export class GoogleApiLoaderService {


constructor(@Inject(GSI_CONFIG) config: GoogleApiClientConfig,
private gsiLoader: GoogleSignInLoaderService,
private signIn: GoogleSignInService) {
private gsiLoader: GoogleSignInLoaderService) {

this.loadGapi();

forkJoin([this.onLoad(), this.gsiLoader.onLoad()]).subscribe(([_1, _2]) => {

this.client = google.accounts.oauth2.initTokenClient({
client_id: config.client_id,
//login_hint: this.extractEmail(credential),
scope: config.scope,
callback: () => undefined,
prompt: config.prompt || ''
Expand Down Expand Up @@ -62,9 +59,4 @@ export class GoogleApiLoaderService {
};
document.getElementsByTagName('head')[0].appendChild(node);
}

private extractEmail(credential:string): string {
const {email, sub} = JSON.parse(atob(credential.split('.')[1]));
return email;
}
}
57 changes: 0 additions & 57 deletions src/lib/google-sign-in/lib/services/google-sign-in.service.ts

This file was deleted.

0 comments on commit bdc19a6

Please sign in to comment.