跳过内容

Google 登录设置

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. 点击Google Console中的新项目按钮 New project 为您的项目命名并点击
    2. __CAPGO_KEEP_0__ Create 项目命名屏幕显示名称字段和创建按钮
    3. 确保您正在正确的项目 项目名称在选择器中显示,指示正确的项目选择
  4. 开始配置 OAuth consent screen
    1. 点击搜索栏

      Google Console搜索栏
    2. 搜索 OAuth consent screen 并点击它

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

      点击 create

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

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

        OAuthConsentScreen中的应用程序Logo上传部分
      2. 应该配置 App域名配置部分的授权域名字段 App domain

        注意
      3. 提供开发者的电子邮件 开发者联系信息部分的电子邮件字段 configure the

        App domain configuration section with authorized domains field
      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. 提交您的应用程序进行验证

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

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

您可以通过多种方式使用 Google 登录。以下是使用 Capacitor 的不同方式的总结表格:

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

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

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

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

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

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

  3. 您的应用程序将从后端调用一些 Google API,但仅当用户正在主动使用应用程序时

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

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

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

在线访问的示例后端

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

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

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

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

如您所见:

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

这个想法很简单。您发送一个简单的请求到 GET 并且这个返回您令牌是否有效或无效以及如果有效,则给您用户的电子邮件。它还给您一些关于用户令牌的其他信息 https://www.googleapis.com/oauth2/v3/tokeninfo Google OAuth Playground 展示令牌信息响应,包含用户详细信息

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

__CAPGO_KEEP_0__

如果您想调用 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());
}
}

编辑页面 SocialLogin.refresh() 上一个 serverAuthCode 入门指南