forked from DefinitelyTyped/DefinitelyTyped
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gapi.auth2.d.ts
284 lines (238 loc) · 8.04 KB
/
gapi.auth2.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
// Type definitions for Google Sign-In API
// Project: https://developers.google.com/identity/sign-in/web/
// Definitions by: Derek Lawless <https://github.com/flawless2011>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference path="../gapi/gapi.d.ts" />
declare namespace gapi.auth2 {
/**
* GoogleAuth is a singleton class that provides methods to allow the user to sign in with a Google account,
* get the user's current sign-in status, get specific data from the user's Google profile,
* request additional scopes, and sign out from the current account.
*/
export class GoogleAuth {
isSignedIn: IsSignedIn;
currentUser: CurrentUser;
/**
* Calls the onInit function when the GoogleAuth object is fully initialized, or calls the onFailure function if
* initialization fails.
*/
then(onInit: () => any, onFailure: (reason: string) => any): any;
/**
* Signs in the user with the options specified to gapi.auth2.init().
*/
signIn(): any;
/**
* Signs in the user using the specified options.
*/
signIn(options?: {
app_package_name?: string;
fetch_basic_profile?: boolean;
prompt?: boolean;
scope?: string;
}, optionBuilder?: SigninOptionsBuilder): any;
/**
* Signs out all accounts from the application.
*/
signOut(): any;
/**
* Revokes all of the scopes that the user granted.
*/
disconnect(): any;
/**
* Get permission from the user to access the specified scopes offline.
*/
grantOfflineAccess(options: {
scope?: string;
redirect_uri?: string;
}): any;
/**
* Attaches the sign-in flow to the specified container's click handler.
*/
attachClickHandler(container: any, options: {
app_package_name?: string;
fetch_basic_profile?: boolean;
prompt?: boolean;
scope?: string;
}, onsuccess: (googleUser: GoogleUser) => any, onfailure: (reason: string) => any): any;
}
export interface IsSignedIn{
/**
* Returns whether the current user is currently signed in.
*/
get(): boolean;
/**
* Listen for changes in the current user's sign-in state.
*/
listen(listener: (signedIn: boolean) => any): void;
}
export interface CurrentUser {
/**
* Returns a GoogleUser object that represents the current user. Note that in a newly-initialized
* GoogleAuth instance, the current user has not been set. Use the currentUser.listen() method or the
* GoogleAuth.then() to get an initialized GoogleAuth instance.
*/
get(): GoogleUser;
/**
* Listen for changes in currentUser.
*/
listen(listener: (user: GoogleUser) => any): void;
}
export class SigninOptionsBuilder {
setAppPackageName(name: string): any;
setFetchBasicProfile(fetch: boolean): any;
setPrompt(prompt: string): any;
setScope(scope: string): any;
}
export interface BasicProfile {
getId(): string;
getName(): string;
getImageUrl(): string;
getEmail(): string;
}
export interface AuthResponse {
access_token: string;
id_token: string;
login_hint: string;
scope: string;
expires_in: string;
first_issued_at: string;
expires_at: string;
}
/**
* A GoogleUser object represents one user account.
*/
export interface GoogleUser {
/**
* Get the user's unique ID string.
*/
getId(): string;
/**
* Returns true if the user is signed in.
*/
isSignedIn(): boolean;
/**
* Get the user's Google Apps domain if the user signed in with a Google Apps account.
*/
getHostedDomain(): string;
/**
* Get the scopes that the user granted as a space-delimited string.
*/
getGrantedScopes(): string;
/**
* Get the user's basic profile information.
*/
getBasicProfile(): BasicProfile;
/**
* Get the response object from the user's auth session.
*/
getAuthResponse(): AuthResponse;
/**
* Returns true if the user granted the specified scopes.
*/
hasGrantedScopes(scopes: string): boolean;
/**
* Signs in the user. Use this method to request additional scopes for incremental
* authorization or to sign in a user after the user has signed out.
* When you use GoogleUser.signIn(), the sign-in flow skips the account chooser step.
* See GoogleAuth.signIn().
*/
signIn(options?: {
app_package_name?: string;
fetch_basic_profile?: boolean;
prompt?: boolean;
scope?: string;
}, optionBuilder?: SigninOptionsBuilder): any;
/**
*
*/
grant(options?: {
app_package_name?: string;
fetch_basic_profile?: boolean;
prompt?: boolean;
scope?: string;
}, optionBuilder?: SigninOptionsBuilder): any;
/**
* Get permission from the user to access the specified scopes offline.
* When you use GoogleUser.grantOfflineAccess(), the sign-in flow skips the account chooser step.
* See GoogleUser.grantOfflineAccess().
*/
grantOfflineAccess(scopes: string): void;
/**
* Revokes all of the scopes that the user granted.
*/
disconnect(): void;
}
export function init(params: {
/**
* The app's client ID, found and created in the Google Developers Console.
*/
client_id?: string;
/**
* The domains for which to create sign-in cookies. Either a URI, single_host_origin, or none.
* Defaults to single_host_origin if unspecified.
*/
cookie_policy?: string;
/**
* The scopes to request, as a space-delimited string. Optional if fetch_basic_profile is not set to false.
*/
scope?: string;
/**
* Fetch users' basic profile information when they sign in. Adds 'profile' and 'email' to the requested scopes. True if unspecified.
*/
fetch_basic_profile?: boolean;
/**
* The Google Apps domain to which users must belong to sign in. This is susceptible to modification by clients,
* so be sure to verify the hosted domain property of the returned user. Use GoogleUser.getHostedDomain() on the client,
* and the hd claim in the ID Token on the server to verify the domain is what you expected.
*/
hosted_domain?: string;
/**
* Used only for OpenID 2.0 client migration. Set to the value of the realm that you are currently using for OpenID 2.0,
* as described in <a href="https://developers.google.com/accounts/docs/OpenID#openid-connect">OpenID 2.0 (Migration)</a>.
*/
openid_realm?: string;
}): GoogleAuth;
/**
* Returns the GoogleAuth object. You must initialize the GoogleAuth object with gapi.auth2.init() before calling this method.
*/
export function getAuthInstance(): GoogleAuth;
}
declare namespace gapi.signin2 {
export function render(id: any, options: {
/**
* The auth scope or scopes to authorize. Auth scopes for individual APIs can be found in their documentation.
*/
scope?: string;
/**
* The width of the button in pixels (default: 120).
*/
width?: number;
/**
* The height of the button in pixels (default: 36).
*/
height?: number;
/**
* Display long labels such as "Sign in with Google" rather than "Sign in" (default: false).
*/
longtitle?: boolean;
/**
* The color theme of the button: either light or dark (default: light).
*/
theme?: string;
/**
* The callback function to call when a user successfully signs in.
* This function must take one argument: an instance of gapi.auth2.GoogleUser (default: none).
*/
onsuccess?: any;
/**
* The callback function to call when sign-in fails. This function takes no arguments (default: none).
*/
onfailure?: any;
/**
* The package name of the Android app to install over the air. See
* <a href="https://developers.google.com/identity/sign-in/web/android-app-installs">Android app installs from your web site</a>.
* Optional. (default: none)
*/
app_package_name?: string;
}): void;
}