- 版本:2.1.0
- GitHub:https://github.com/NativeScript/plugins
- NPM:https://npmjs.net.cn/package/%40nativescript%2Fgoogle-signin
- 下载
- 昨日:11
- 上周:120
- 上个月:418
@nativescript/google-signin
内容
简介
一个插件,允许您使用 Google Sign-In 进行用户认证。
安装
在项目的根目录下运行以下命令安装插件。
npm install @nativescript/google-signin
Android 前提条件
- 要为 Android 使用 GoogleSignIn,请访问 将 Firebase 添加到您的 Android 项目 并按照以下 2 个步骤操作。
除非您正在使用需要它的其他 Google 服务,否则您不需要在您的应用程序中包含 添加 Firebase 配置文件 中提到的 google-services.json
文件。
- 生成调试 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
- 使用 Google Cloud Platform API 管理员 启用您想要的 OAuth API。请确保您已经在控制台中填写了所有 OAuth 免责声明屏幕 所需的字段。否则,您可能会遇到 APIException 错误。
iOS 前提条件
-
此插件需要
iOS 9.0+
。 -
要为 iOS 使用 GoogleSignIn,请按照以下步骤在 将 Firebase 添加到您的 Apple 项目 中设置应用程序。
- 创建 Firebase 项目
- 在 Firebase 中注册您的应用程序
- 添加 Firebase 配置文件,
GoogleService-Info.plist
到App_Resources/iOS/
。 - 进入 Google Cloud 并选择您在 Firebase 中创建的项目。访问 Apis and Services -> Credentials 部分,并添加一个类型为
OAuth Client ID
的新凭据。在应用程序类型中选择 iOS。返回凭据屏幕,并在OAuth 2.0 Client ID
部分输入您的新密钥。复制Client ID
和iOS URL Scheme
以供下一步使用。 - 将以下
CFBundleURLTypes
和GIDClientID
属性添加到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 进行用户登录,请按照以下步骤操作。
- 注册并添加 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
文件中,并设置所需的 colorScheme
和 colorStyle
选项:
<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>
- 在 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 类的样式属性。此外,该插件还提供了 colorScheme
和 colorStyle
属性。
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