跳过内容

Google登录设置

GitHub

In this guide, you will learn how to setup Google Login with Capgo Social Login. You will need the following in order to setup Google Login:

  • 一个Google账户

一般设置

基本设置

在本部分中,您将设置由 Google 展示的登录屏幕。

  1. 请访问 console.cloud.google.com
  2. 点击项目选择器 Google Console 项目选择器
  3. 如果您尚未创建项目,请 创建新项目.
    1. 点击 New project 在 Google 控制台中的新项目按钮
    2. 输入项目名称并点击 Create 显示名称字段和创建按钮的项目命名屏幕
    3. 确保您在正确的项目中 在选择正确项目时显示的项目名称
  4. 开始配置 OAuth consent screen
    1. 点击搜索栏

      Google 控制台搜索栏
    2. 搜索 OAuth consent screen 并点击它

      显示 OAuth 同意屏幕选项的搜索结果
    3. 配置同意屏幕

      点击 create

      OAuth 授权屏幕用户类型选择,具有外部和内部选项
  5. 填写关于您的应用的信息
    1. 让我们从 App Information

      应用信息部分开始,显示应用名称和用户支持邮箱字段
      • 请输入您的 App Name
      • 输入 user support email
      1. 可以 添加应用程序Logo

        OAuth 同意屏幕中的应用程序Logo上传部分
      2. 必须 配置 App domain

        应用域名配置部分的授权域名字段
      3. 必须 __CAPGO_KEEP_0__ 提供开发者邮箱

        开发者联系方式部分,包含邮箱字段
      4. 点击 save and continue

        表单底部的保存并继续按钮
  6. 配置权限范围
    1. 点击 add or remove scopes

      在权限范围配置屏幕中的添加或删除权限范围按钮
    2. 选择以下权限范围并点击 update

      权限选择对话框,邮箱和个人资料权限范围已选择
    3. 点击 save and continue

      在权限范围屏幕中的保存并继续按钮
  7. 添加测试用户
    1. 点击 add users 测试用户部分中的添加用户按钮
    2. 输入您的Google邮箱,按回车,然后点击 add 测试用户邮箱输入框和添加按钮
    3. 点击 save and continue 测试用户屏幕中的保存并继续按钮
  8. 点击 back to dashboard 完成页面底部的返回到仪表板按钮
  9. 提交您的应用程序进行验证

在线访问与离线访问的区别

标题:在线访问与离线访问的区别

There are multiple ways to use Google Login with Capacitor. Here is a table that summarizes the differences between the two:

在线访问离线访问
需要后端
长期有效的访问令牌
易于设置

如果您仍然不知道应该选择哪一个,请考虑以下场景:

  1. 您希望用户登录,立即为其颁发一个自定义 JWT。您的应用程序不会调用 Google API

    在这种情况下,请选择在线访问。

  2. 您的应用程序将在客户端从 Google API 调用某些 API,但永远不会从后端调用

    在这种情况下,请选择在线访问

  3. 您的应用程序将在后端从 Google API 调用某些 API,但仅在用户正在积极使用应用程序时

    在这种情况下,请选择在线访问

  4. 您的应用程序将定期检查用户的日历,即使用户不在使用应用程序

    在这种情况下,请选择离线访问

在线访问示例后端

标题:在线访问示例后端

在本教程的这一部分,我将展示如何在您的后端验证用户。

这个例子将非常简单,并且将基于以下技术:

您可以在这里找到本例的code 如您所见:

VS __CAPGO_KEEP_0__ 展示了 Google 认证 __CAPGO_KEEP_1__,用于验证令牌

VS Code showing Google authentication code that verifies tokens

并且它会返回令牌是否有效以及令牌有效时会给您用户的电子邮件地址以及令牌的其他信息 GET __CAPGO_KEEP_0__ https://www.googleapis.com/oauth2/v3/tokeninfo __CAPGO_KEEP_1__

Google OAuth Playground 展示 token 信息响应,包含用户详细信息

从那里,您可以向用户颁发自己的 JWT 或颁发会话 cookie。实现最终认证的可能性是无穷尽的。

如果您想调用 Google API,我强烈建议您查看 Google OAuth 2.0 Playground从那里您可以轻松看到可以调用的 API。

使用离线访问与您的后端

标题:使用离线访问与您的后端

要使用离线访问,您需要以下内容:

  • HTTP 服务器

在本例中,我将使用以下技术来为我的应用提供离线访问:

本示例的code可以在这里找到 客户端__CAPGO_KEEP_0__看起来像这样:

As for the client code, it looks like this:

import { Capacitor } from '@capacitor/core';
import { GoogleLoginOfflineResponse, SocialLogin } from '@capgo/capacitor-social-login';
import { usePopoutStore } from '@/popoutStore'; // <-- specific to my app
const baseURL = "[redacted]";
async function fullLogin() {
await SocialLogin.initialize({
google: {
webClientId: '[redacted]',
iOSClientId: '[redacted]',
iOSServerClientId: 'The same value as webClientId',
mode: 'offline' // <-- important
}
})
const response = await SocialLogin.login({
provider: 'google',
options: {
forceRefreshToken: true // <-- important
}
})
if (response.provider === 'google') {
const result = response.result as GoogleLoginOfflineResponse
const res = await fetch(`${baseURL}/auth/google_offline`, {
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
serverAuthCode: result.serverAuthCode,
platform: Capacitor.getPlatform()
}),
method: "POST"
})
if (res.status !== 200) {
popoutStore.popout("Full google login failed", "check console");
return
}
const { jwt } = await res.json();
const userinfo = await fetch(`${baseURL}/auth/get_google_user`, {
headers: {
Authorization: `Bearer ${jwt}`
}
})
if (userinfo.status !== 200) {
popoutStore.popout("Full google (userinfo) login failed", "check console");
return
}
popoutStore.popout("userinfo res", await userinfo.text());
}
}

继续从 Google 登录设置 SocialLogin.refresh() 客户端__CAPGO_KEEP_0__看起来像这样: serverAuthCode 复制到剪贴板

注意这里什么都没有:没有在应用中调用。Google 离线模式下,刷新发生在您的后端交换和安全存储刷新令牌之后。

继续从 Google 登录设置

如果您正在使用 Google 登录设置 来规划身份验证和帐户流程,连接它 使用 @capgo/capacitor-social-login 为使用 @capgo/capacitor-social-login 的本机功能 @capgo/capacitor-social-login 为 @capgo/capacitor-social-login 的实现细节 @capgo/capacitor-passkey 为 @capgo/capacitor-passkey 的实现细节 @capgo/capacitor-native-biometric 为 @capgo/capacitor-native-biometric 的实现细节 双重认证 双重认证实现细节。