@nativescript/google-signin
适用于您的 NativeScript 应用的 Google 登录
npm i --save @nativescript/google-signin

@nativescript/google-signin

内容

简介

一个插件,允许您使用 Google Sign-In 进行用户认证。

安装

在项目的根目录下运行以下命令安装插件。

npm install @nativescript/google-signin

Android 前提条件

  1. 要为 Android 使用 GoogleSignIn,请访问 将 Firebase 添加到您的 Android 项目 并按照以下 2 个步骤操作。

除非您正在使用需要它的其他 Google 服务,否则您不需要在您的应用程序中包含 添加 Firebase 配置文件 中提到的 google-services.json 文件。

  1. 生成调试 SHA-1 指纹并将其添加到您的 Firebase 项目中。

在您的机器上生成调试密钥库的 SHA-1 指纹并将其添加到您的应用程序的 Firebase 项目中。如果不这样做,将导致出现 Error: 10 错误。

以下命令用于生成调试密钥库的 SHA-1 指纹。对于调试密钥库,密码是 android

  • macOS/Linux
keytool -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
  • Windows
keytool -list -v \
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
  1. 使用 Google Cloud Platform API 管理员 启用您想要的 OAuth API。请确保您已经在控制台中填写了所有 OAuth 免责声明屏幕 所需的字段。否则,您可能会遇到 APIException 错误。

iOS 前提条件

  1. 此插件需要 iOS 9.0+

  2. 要为 iOS 使用 GoogleSignIn,请按照以下步骤在 将 Firebase 添加到您的 Apple 项目 中设置应用程序。

    1. 创建 Firebase 项目
    2. 在 Firebase 中注册您的应用程序
    3. 添加 Firebase 配置文件GoogleService-Info.plistApp_Resources/iOS/
    4. 进入 Google Cloud 并选择您在 Firebase 中创建的项目。访问 Apis and Services -> Credentials 部分,并添加一个类型为 OAuth Client ID 的新凭据。在应用程序类型中选择 iOS。返回凭据屏幕,并在 OAuth 2.0 Client ID 部分输入您的新密钥。复制 Client IDiOS URL Scheme 以供下一步使用。
    5. 将以下 CFBundleURLTypesGIDClientID 属性添加到 App_Resources/iOS/Info.plist 文件中。
<!-- Google Sign-in Section -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- TODO Replace this value: -->
<!-- Paste your iOS URL Scheme here -->
<string>com.googleusercontent.apps.292142294722-23nmrq9mn8rhpqipjc1bt4qecga3qgsf</string>
</array>
</dict>
</array>
<key>GIDClientID</key>
<!-- Paste your Client ID here -->
<string>749673967192-c24phj29u2otpict36e71ocjo2g5i3hs.apps.googleusercontent.com</string>
<!-- End of the Google Sign-in Section -->

注意 根据开发人员文档,自 2020 年 6 月 30 日 开始,使用登录服务的应用程序在提交到 Apple App Store 时必须也提供 Sign in with Apple 选项。为此,请考虑使用 @nativescript/apple-sign-in 插件。

使用 @nativescript/google-signin

登录

要使用 GoogleSignIn 进行用户登录,请按照以下步骤操作。

  1. 注册并添加 GoogleSignInButton 到您的标记中,以便能够启动 GoogleSigIn。
  • 核心
<Page xmlns:ui="@nativescript/google-signin">
<ui:GoogleSigninButton tap="handleSignIn" colorScheme='auto' colorStyle='standard'/>
</Page>
  • Angular

按照以下方式注册按钮

import { registerElement } from '@nativescript/angular';
registerElement('GoogleSignInButton', () => require('@nativescript/google-signin').GoogleSignInButton);

接下来,将其添加到您的 html 文件中,并设置所需的 colorSchemecolorStyle 选项:

<GoogleSignInButton colorScheme='auto' colorStyle='standard' (tap)="yourGoogleSigninFunction()"></GoogleSignInButton>

Vue

要注册按钮,请将以下代码添加到 main.ts 文件中。

registerElement('GoogleSignInButton',()=> require("@nativescript/google-signin").GoogleSignInButton)

然后在 .vue 文件中如下使用它

<GoogleSignInButton colorScheme='auto' colorStyle='standard' @tap="yourGoogleSigninFunction"></GoogleSignInButton>
  1. 在 GoogleSignInButton 被点击时调用 signIn() 方法

在调用 signIn()signInSilently() 方法以登录用户之前,调用 configure() 以初始化 Firebase。如果您想要设置任何配置选项,可以将空对象 {} 作为参数传递给 configure

import { GoogleSignin } from '@nativescript/google-signin';

try {
await GoogleSignin.configure({});
const user = await GoogleSignin.signIn();
} catch (e) {}

样式化 GoogleSignInButton

GoogleSignInButton 是一个 View 实例,因此您可以使用 View 类的样式属性。此外,该插件还提供了 colorSchemecolorStyle 属性。

API

GoogleSignIn

提供 GoogleSignIn API 的类。它具有以下方法

configure()

await GoogleSignIn.configure(configuration)

指定登录请求的属性,例如作用域、账户名称等。

在调用 signIn()signInSilently() 方法之前调用此方法。仅在应用启动后调用一次。

参数 configuration 是可选的 配置 对象。

配置

配置对象具有以下属性。所有属性都是可选的。

属性 类型
scopes string[]
signInOptions 'default' | 'games'
clientId string
serverClientId string
accountName string
hostedDomain string

signIn()

user: User = await GoogleSignin.signIn()

弹出模态框让用户登录到应用程序。


signInSilently()

user: User = await GoogleSignin.signInSilently()

isSignedIn()

isUserSignedIn: boolean
= GoogleSignin.isSignedIn()

检查用户是否当前已登录。


playServicesAvailable()

isPlayServicesAvailable: boolean = await GoogleSignin.playServicesAvailable();

检查设备是否已安装 Google Play 服务。在 iOS 上始终解析为 true

需要最新的 Google Play 服务才能显示登录模态框。


signOut()

GoogleSignin.signOut()

注销当前用户。


disconnect()

await GoogleSignin.disconnect()

断开当前用户的连接。


getTokens()

tokens: { idToken: string; accessToken: string;} = await GoogleSignin.getTokens()

解析为包含 { idToken: string, accessToken: string, } 的对象或因错误而拒绝。请注意,使用 accessToken 在您的后端服务器上进行身份声明是 不推荐的


getCurrentUser()

user : User | null = GoogleSignin.getCurrentUser()

此方法解析为 null 或一个 用户 对象。

用户

用户对象具有以下成员

属性 类型 描述
id string 只读
displayName string 只读
email string 只读
givenName string 只读
familyName string 只读
idToken string 只读
accessToken string 只读
grantedScopes string[] 只读
photoUrl string 只读
serverAuthCode string 只读
requestScopes(scopes: string[]) Promise<IUser> 有关 IUser 的属性,请参阅 用户
本地 com.google.android.gms.auth.api.signin.GoogleSignInAccount | GIDGoogleUser 特定于平台的实例。

GoogleSignInButton

属性 类型
colorScheme "dark" | "light" | "auto"
colorStyle "standard" | "wide" | "icon"

许可证

Apache 许可证版本 2.0