react-native-google-signin
Version:
Google Signin for your react native applications
159 lines (132 loc) • 4 kB
TypeScript
// Type definitions for react-native-google-signin 1.0
// Project: https://github.com/react-native-community/react-native-google-signin
// Definitions by: Jacob Froman <https://github.com/j-fro>
// Michele Bombardi <https://github.com/bm-software>
// Christian Chown <https://github.com/christianchown>
// Eric Chen <https://github.com/echentw>
import * as React from 'react';
import { StyleProp, ViewProps, ViewStyle } from 'react-native';
export interface GoogleSigninButtonProps extends ViewProps {
style?: StyleProp<ViewStyle>;
size?: GoogleSigninButton.Size;
color?: GoogleSigninButton.Color;
disabled?: boolean;
onPress?(): void;
}
export class GoogleSigninButton extends React.Component<GoogleSigninButtonProps> {
constructor(props: GoogleSigninButtonProps);
}
export namespace GoogleSigninButton {
enum Size {
Standard,
Wide,
Icon,
}
enum Color {
Light,
Dark,
}
}
export interface HasPlayServicesParams {
/**
* When showPlayServicesUpdateDialog is true, the user will be prompted to
* install Play Services if on Android and they are not installed.
* Default is true
*/
showPlayServicesUpdateDialog?: boolean;
}
export interface ConfigureParams {
/**
* The Google API scopes to request access to. Default is email and profile.
*/
scopes?: string[];
/**
* Web client ID from Developer Console. Required for offline access
*/
webClientId?: string;
/**
* If you want to specify the client ID of type iOS
*/
iosClientId?: string;
/**
* Must be true if you wish to access user APIs on behalf of the user from
* your own server
*/
offlineAccess?: boolean;
/**
* Specifies a hosted domain restriction
*/
hostedDomain?: string;
/**
* iOS ONLY.[iOS] The user's ID, or email address, to be prefilled in the authentication UI if possible.
* https://developers.google.com/identity/sign-in/ios/api/interface_g_i_d_sign_in.html#a0a68c7504c31ab0b728432565f6e33fd
*/
loginHint?: string;
/**
* ANDROID ONLY. Specifies if the consent prompt should be shown at each login.
*/
forceConsentPrompt?: boolean;
/**
* ANDROID ONLY. An account name that should be prioritized.
*/
accountName?: string;
}
export interface User {
user: {
id: string;
name: string | null;
email: string;
photo: string | null;
familyName: string | null;
givenName: string | null;
};
scopes?: string[];
idToken: string | null;
/**
* Not null only if a valid webClientId and offlineAccess: true was
* specified in configure().
*/
serverAuthCode: string | null;
}
export namespace GoogleSignin {
/**
* Check if the device has Google Play Services installed. Always resolves
* true on iOS
*/
function hasPlayServices(params?: HasPlayServicesParams): Promise<boolean>;
/**
* Configures the library for login. MUST be called before attempting login
*/
function configure(params?: ConfigureParams): void;
/**
* Returns a Promise that resolves with the current signed in user or rejects
* if not signed in.
*/
function signInSilently(): Promise<User>;
/**
* Prompts the user to sign in with their Google account. Resolves with the
* user if successful.
*/
function signIn(): Promise<User>;
/**
* Signs the user out.
*/
function signOut(): Promise<null>;
/**
* Removes your application from the user's authorized applications
*/
function revokeAccess(): Promise<null>;
/**
* Returns whether the user is currently signed in
*/
function isSignedIn(): Promise<boolean>;
function getCurrentUser(): Promise<User | null>;
function clearCachedToken(token: string): Promise<null>;
function getTokens(): Promise<{ idToken: string; accessToken: string }>;
}
export const statusCodes: {
SIGN_IN_CANCELLED: string;
IN_PROGRESS: string;
PLAY_SERVICES_NOT_AVAILABLE: string;
SIGN_IN_REQUIRED: string;
};