UNPKG

4.09 kBSource Map (JSON)View Raw
1{"version":3,"file":"Google.js","sourceRoot":"","sources":["../src/Google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC;AAiC5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAmB;IAClD,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,QAAQ,CAAC;KACrB;IAED,6CAA6C;IAC7C,IAAI,SAAS,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,EAAG;QAClG,QAAQ,GAAG,KAAK,CAAC;KACpB;IAGD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KAC/B;IAED,MAAM,eAAe,GACnB,SAAS,CAAC,YAAY,KAAK,YAAY;QACrC,CAAC,CAAC,MAAM,CAAC,4BAA4B;QACrC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;IAC7B,MAAM,WAAW,GACf,SAAS,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAEjG,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QAC1C,eAAe,EAAE,eAAe,IAAI,MAAM,CAAC,QAAQ;QACnD,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ;QAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ;QACR,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,KAAK,EAAE;QACtB,6FAA6F;QAC7F,QAAQ;QACR,IAAI,gBAAgB,GAAG,MAAM,KAAK,CAAC,2CAA2C,EAAE;YAC9E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,CAAC,WAAW,EAAE,EAAE;SAChE,CAAC,CAAC;QACH,IAAI,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO;YACL,GAAG,WAAW;YACd,IAAI,EAAE;gBACJ,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,QAAQ,CAAC,UAAU;gBAC9B,UAAU,EAAE,QAAQ,CAAC,WAAW;gBAChC,QAAQ,EAAE,QAAQ,CAAC,OAAO;gBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB;SACF,CAAC;KACH;SAAM;QACL,OAAO,WAAW,CAAC;KACpB;AACH,CAAC","sourcesContent":["import { Constants } from 'expo-constants';\nimport { NativeModules, Platform } from 'react-native';\n\nconst Google = NativeModules.ExponentGoogle;\n\ntype LogInConfig = {\n androidClientId?: string,\n androidStandaloneAppClientId?: string,\n iosClientId?: string,\n iosStandaloneAppClientId?: string,\n webClientId?: string,\n clientId?: string,\n behavior?: 'system' | 'web',\n scopes?: string[],\n};\n\ntype LogInResult =\n | {\n type: 'cancel',\n }\n | {\n type: 'success',\n accessToken?: string,\n idToken: string | null,\n refreshToken: string | null,\n serverAuthCode: string | null,\n user: {\n id?: string,\n name?: string,\n givenName?: string,\n familyName?: string,\n photoUrl?: string,\n email?: string,\n },\n };\n\nexport async function logInAsync(config: LogInConfig): Promise<LogInResult> {\n let behavior = config.behavior;\n if (!behavior) {\n behavior = 'system';\n }\n\n // Only standalone apps can use system login.\n if (Constants.appOwnership !== 'standalone' && (behavior === 'system' && Platform.OS === \"android\") ) {\n behavior = 'web';\n }\n \n\n let scopes = config.scopes;\n if (!scopes) {\n scopes = ['profile', 'email'];\n }\n\n const androidClientId =\n Constants.appOwnership === 'standalone'\n ? config.androidStandaloneAppClientId\n : config.androidClientId;\n const iosClientId =\n Constants.appOwnership === 'standalone' ? config.iosStandaloneAppClientId : config.iosClientId;\n\n const logInResult = await Google.logInAsync({\n androidClientId: androidClientId || config.clientId,\n iosClientId: iosClientId || config.clientId,\n webClientId: config.webClientId,\n behavior,\n scopes,\n });\n\n if (behavior === 'web') {\n // Web login only returns an accessToken so use it to fetch the same info as the native login\n // does.\n let userInfoResponse = await fetch('https://www.googleapis.com/userinfo/v2/me', {\n headers: { Authorization: `Bearer ${logInResult.accessToken}` },\n });\n let userInfo = await userInfoResponse.json();\n return {\n ...logInResult,\n user: {\n id: userInfo.id,\n name: userInfo.name,\n givenName: userInfo.given_name,\n familyName: userInfo.family_name,\n photoUrl: userInfo.picture,\n email: userInfo.email,\n },\n };\n } else {\n return logInResult;\n }\n}\n"]}
\No newline at end of file