跳过内容

Google登录设置

GitHub

在本指南中,您将学习如何使用 Capgo 社交登录设置 Google 登录。您需要以下内容才能设置 Google 登录:

  • Google 帐户

通用设置

简介部分

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

  1. 请前往 console.cloud.google.com
  2. 点击项目选择器 Google Console 项目选择器
  3. 如果您尚未创建项目,请 创建新项目.
    1. 点击 New project Google Console 中的新项目按钮
    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. CAN 添加应用程序Logo

        注意
      2. 应该 配置 应用程序域名配置部分 App domain

        注意
      3. 必须 提供开发者的电子邮件

        开发者联系信息部分中的电子邮件字段
      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:

online access脱机访问
需要后端
长期访问令牌
易于设置

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

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

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

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

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

  3. 您的应用程序将在后端调用一些谷歌API,但只有当用户正在使用应用程序时才会调用

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

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

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

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

本示例将非常简单,它将基于以下技术:

您可以在此示例中找到 code 在此

如您所见:

VS Code 展示 Google 认证 code,验证令牌

这个想法相当简单。您发送一个简单的 GET 请求到 https://www.googleapis.com/oauth2/v3/tokeninfo 它会返回令牌是否有效以及令牌有效时会给您用户的电子邮件。它还会给您一些关于用户令牌的其他信息。

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

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

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

使用离线访问与您的后端

使用离线访问与您的后端

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

  • 一个HTTP服务器

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

本例的code可以在这里找到 here

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());
}
}

注意这里缺少了什么:在应用中没有 SocialLogin.refresh() call。 这是有意为之的。 在 Google 离线模式下,刷新发生在您的后端交换并安全存储刷新令牌之后。 serverAuthCode 继续从 Google 登录设置

标题:继续从 Google 登录设置

如果您正在使用

Google 登录设置 来规划身份验证和帐户流程,连接它到 使用 @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-social-login 为使用 @capgo/capacitor-social-login 的原生能力 for the native capability in Using @capgo/capacitor-social-login, @capgo/capacitor社交登录 为 @capgo/capacitor 社交登录 的实现细节 @capgo/capacitor-passkey 为 @capgo/capacitor-passkey 的实现细节 @capgo/capacitor原生生物识别 为 @capgo/capacitor原生生物识别 的实现细节,以及 双因素认证 为双因素认证的实现细节。