跳过内容

Google 登录设置

GitHub

简介

简介

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

  • Google账户

通用设置

通用设置

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

  1. 请前往 console.cloud.google.com
  2. 点击项目选择器 Google 控制台项目选择器
  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. 您 必须 提供开发者的电子邮件

        开发者联系信息部分中的电子邮件字段
      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 scope selection dialog with email and profile scopes selected
  8. 点击 back to dashboard 返回到仪表板按钮(位于完成页面底部)
  9. 提交您的应用程序进行验证

在线访问与离线访问之间的差异

标题:在线访问与离线访问之间的差异

使用Capacitor与Google登录有多种方式。以下是两者的主要差异:

在线访问离线访问
需要后端❌✅
长期访问令牌❌✅
易于设置✅❌

__CAPGO_KEEP_0__

  1. 换取访问令牌和刷新令牌,然后在后端刷新这些令牌。

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

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

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

  3. 您的应用程序将在客户端调用一些 Google API,但从未在后端调用它们

    In 这种情况,选择在线访问

  4. 您的应用程序将定期检查用户的日历,即使用户没有主动使用应用程序

    In 这种情况,选择离线访问

在线访问的示例后端

标题:在线访问的示例后端

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

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

您可以在这里找到 code 的示例 这里

您可以看到

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

这个想法很简单。您发送一个简单的请求到 GET 请求 https://www.googleapis.com/oauth2/v3/tokeninfo Google OAuth Playground 展示令牌信息响应,包含用户详细信息

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

如果您想调用 Google __CAPGO_KEEP_0__,我强烈建议您查看

如果您想调用Google的API,我强烈建议您查看 。从那里您可以轻松看到您可以调用的 API使用离线访问与您的后端

使用离线访问与您的后端

__CAPGO_KEEP_0__

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

  • 需要以下内容才能使用离线访问:

An HTTP server

The code for this example can be found Zod

客户端code的外观如下:

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() 没有在应用中调用。 这是故意的。 在 Google 离线模式下,刷新发生在您的后端交换并安全存储刷新令牌之后。 serverAuthCode 继续从 Google 登录设置

标题:继续从 Google 登录设置

如果您正在使用

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