UNPKG

vue3-google-signin

Version:

Google Sign-in for Vue3 with Google Identity Service

145 lines (144 loc) 5.36 kB
import type { MaybeRef } from '../utils/types'; import type { Context, CredentialResponse, NativeCallbackResponse, PromptMomentNotification } from '../interfaces/accounts'; import { type Ref } from "vue"; export interface UseGoogleOneTapLoginOptions { /** * Callback to run on success * * @memberof UseGoogleOneTapLoginOptions */ onSuccess?: (credentialResponse: CredentialResponse) => void; /** * Callback to run on error * * @memberof UseGoogleOneTapLoginOptions */ onError?: () => void; /** * Callback to run on prompt moment * * @memberof UseGoogleOneTapLoginOptions */ onPromptMomentNotification?: (promptMomentNotification: PromptMomentNotification) => void; /** * Native callback * * @memberof UseGoogleOneTapLoginOptions */ onNativeCallback?: (nativeCallbackResponse: NativeCallbackResponse) => void; /** * On intermediate iframe closed * * @memberof UseGoogleOneTapLoginOptions */ onIntermediateIframeCloseCallback?: () => void; /** * Explicitly disable the automatic prompt. * This is `false` by default. You can trigger the prompet using `login` returned by the composable * * @type {MaybeRef<boolean>} * @memberof UseGoogleOneTapLoginOptions */ disableAutomaticPrompt?: MaybeRef<boolean>; /** * This field determines if an ID token is automatically returned without any user interaction * when there's only one Google session that has approved your app before * * @type {MaybeRef<boolean>} * @default false * @see https://developers.google.com/identity/gsi/web/reference/js-reference#auto_select * @memberof UseGoogleOneTapLoginOptions */ autoSelect?: MaybeRef<boolean>; /** * This attribute is the URI of your login endpoint. * May be omitted if the current page is your login page, in which case the credential is posted to this page by default. * * * @type {MaybeRef<string>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#login_uri * @memberof UseGoogleOneTapLoginOptions */ loginUri?: MaybeRef<string>; /** * This field sets whether or not to cancel the One Tap request if a user clicks outside the prompt. * * @type {MaybeRef<boolean>} * @default true * @see https://developers.google.com/identity/gsi/web/reference/js-reference#cancel_on_tap_outside * @memberof UseGoogleOneTapLoginOptions */ cancelOnTapOutside?: MaybeRef<boolean>; /** * This attribute sets the DOM ID of the container element. * * @type {MaybeRef<string>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#prompt_parent_id * @memberof UseGoogleOneTapLoginOptions */ promptParentId?: MaybeRef<string>; /** * This field is a random string used by the ID token to prevent replay attacks. * * @type {MaybeRef<string>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#nonce * @memberof UseGoogleOneTapLoginOptions */ nonce?: MaybeRef<string>; /** * This field changes the text of the title and messages in the One Tap prompt. * * @type {MaybeRef<Context>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#context * @memberof UseGoogleOneTapLoginOptions */ context?: MaybeRef<Context>; /** * If you need to display One Tap in the parent domain and its subdomains, pass the parent domain to this field so that a single shared-state cookie is used. * * @type {MaybeRef<string>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#state_cookie_domain * @memberof UseGoogleOneTapLoginOptions */ stateCookieDomain?: MaybeRef<string>; /** * The origins that are allowed to embed the intermediate iframe. One Tap will run in the intermediate iframe mode if this field presents. * * @type {(MaybeRef<string> | MaybeRef<string[]>)} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#allowed_parent_origin * @memberof UseGoogleOneTapLoginOptions */ allowedParentOrigin?: MaybeRef<string> | MaybeRef<string[]>; /** * This field determines if the upgraded One Tap UX should be enabled on browsers that support Intelligent Tracking Prevention (ITP). * * @type {MaybeRef<boolean>} * @see https://developers.google.com/identity/gsi/web/reference/js-reference#itp_support * @memberof UseGoogleOneTapLoginOptions */ itpSupport?: MaybeRef<boolean>; } export interface UseOneTapResult { /** * Is one tap ready to be used? * * @type {Readonly<Ref<boolean>>} * @memberof UseOneTapResult */ isReady: Readonly<Ref<boolean>>; /** * Trigger one tap login manually * * @memberof UseOneTapResult */ login: () => void; } /** * Use google one tap login * * @export * @param {UseGoogleOneTapLoginOptions} [options] * @see https://developers.google.com/identity/gsi/web/guides/display-google-one-tap * @return {*} {UseOneTapResult} */ export default function useOneTap(options?: UseGoogleOneTapLoginOptions): UseOneTapResult;