Google登录设置
安装
简介
简介部分在本指南中,您将学习如何使用 Capgo 社交登录设置 Google 登录。您需要以下内容才能设置 Google 登录:
- Google 帐户
通用设置
通用设置部分在本部分中,您将设置 Google 显示的登录屏幕。
- 请前往 console.cloud.google.com
- 点击项目选择器
- 如果您尚未创建项目,请 创建新项目.
- 点击
New project
- 为项目命名并点击
Create
- 确保您在正确的项目中
- 点击
- 开始配置
OAuth consent screen-
点击搜索栏
-
搜索
OAuth consent screen并点击它
-
配置同意屏幕
点击
create
-
- 填写关于您的应用的信息
-
让我们从
App Information
- 请输入您的
App Name - 输入
user support email
-
您 __CAPGO_KEEP_0__ 上传应用程序Logo
-
__CAPGO_KEEP_0__ 应该 配置
App domain
-
您 context:您定义 必须
-
开发者联系信息部分中的电子邮件字段
save and continue
- 请输入您的
-
- 表单底部的保存并继续按钮
-
配置权限范围
add or remove scopes
-
选择以下权限并点击
update
-
点击
save and continue
-
- 添加测试用户
- 点击
add users
- 输入您的Google邮箱,点击回车,点击
add
- 点击
save and continue
- 点击
- 点击
back to dashboard
- 提交您的应用程序进行验证
在线访问与离线访问的区别
使用__CAPGO_KEEP_0__与Google登录有多种方式。以下是两者的主要区别:There are multiple ways to use Google Login with Capacitor. Here is a table that summarizes the differences between the two:
| 离线访问 | 脱机访问 | |
|---|---|---|
| 需要后端 | ❌ | ✅ |
| 长期访问令牌 | ❌ | ✅ |
| 易于设置 | ✅ | ❌ |
如果您仍然不知道应该选择哪一个,请考虑以下场景:
-
您希望用户登录,立即之后您将为他发出一个自定义JWT。您的应用程序将不会从客户端调用Google API
在这种情况下,请选择在线访问。
-
您的应用程序将从客户端调用一些Google API,但永远不会从后端调用
在这种情况下,请选择在线访问
-
您的应用程序将在后端调用一些Google API,但只有当用户正在积极使用应用程序时才会调用
在这种情况下,请选择在线访问
-
您的应用程序将定期检查用户的日历,即使用户不在使用应用程序
在这种情况下,请选择离线访问
在线访问的示例后端
标题:在线访问的示例后端在本教程的这一部分,我将展示如何在您的后端验证用户。
本示例将非常简单,它将基于以下技术:
您可以在此处找到 code 的示例 这里
如您所见:
这个想法很简单。您发送一个简单的请求到 GET 并且这个返回您令牌是否有效或无效以及如果有效,给您用户的电子邮件。它还给您一些关于用户令牌的其他信息。 https://www.googleapis.com/oauth2/v3/tokeninfo Google OAuth Playground 展示令牌信息响应,包含用户详细信息
如果您想调用 Google __CAPGO_KEEP_0__,我强烈建议您查看
If you do want to call Google API’s, I would strongly recommend looking at 。从那里您可以轻松看到您可以调用的 API。使用离线访问与您的后端
__CAPGO_KEEP_0__
使用离线访问与您的后端为了使用离线访问,您需要以下内容:
- 一个HTTP服务器
在本例中,我将使用以下技术来为我的应用提供离线访问:
-
LowDb (一个简单的数据库)
本例的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() 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原生生物识别的实现细节,以及 双因素认证 为双因素认证的实现细节。