跳过内容

Google iOS 登录

GitHub

介绍

简介

在本指南中,您将学习如何在 iOS 设备上设置 Google 登录和 Capgo 社交登录。 我假设您已经阅读了.

在本部分中,您将学习如何在 iOS 设备上设置 Google 登录。

  1. 在 Google 控制台中创建 iOS 客户端 ID

    1. 在搜索栏中点击

      Google 控制台搜索栏
    2. 在搜索栏中输入 credentials 并点击 APIs and Services 第 2 项(截图中的第 2 项)

      APIs 和服务选项
    3. 点击 create credentials

      在 Google 控制台中点击创建凭据按钮
    4. 选择 OAuth client ID

      在凭据创建菜单中选择 OAuth 客户端 ID
    5. 选择 Application typeiOS

      应用类型选择中 iOS 选项
    6. 找到 bundle ID

      1. 打开 Xcode

      2. 双击 App

        在 Xcode 项目导航器中双击 App 目标
      3. 确保您处于 Targets -> App

        在 Xcode 中的 Targets 部分,选择 App
      4. 找到您的 Bundle Identifier

        在 Xcode 项目设置中的 Bundle Identifier 字段
      5. 返回 Google Console 并将您的 Bundle Identifier 粘贴到 Google Console iOS 客户端创建表单中的 Bundle ID 字段 Bundle ID

        如果您已经将应用发布到 App Store,则可选地添加您的
    7. App Store ID 到客户端 ID,如果您已经将应用发布到 App Store Team ID 填写所有详细信息后,点击

    8. 在 iOS 客户端创建表单底部的 Create 按钮 create

      在 iOS 客户端创建表单底部的 Create 按钮
    9. 点击 OK

      确认客户端 ID 创建后弹出的确认对话框中的 OK 按钮
    10. 打开刚创建的 iOS 客户端

      在凭据列表中显示的刚创建的 iOS 客户端
    11. 复制以下数据

      显示客户端 ID 和反转客户端 ID 的客户端 ID 详情
  2. 修改您的应用程序的 Info.plist

    1. 打开 Xcode 并找到 Info.plist 文件

      在 Xcode 项目导航器中找到 Info.plist 文件
    2. 右键单击此文件并以源代码形式打开 code

      右键菜单显示 Open As Source Code 选项
    3. 您的文件底部,您将看到一个 Plist 标签 </dict> Info.plist 文件中的字典标签

      关闭字典标签
    4. 在关闭标签之前 </dict> 插入以下片段

      Info.plist文件中,URL方案code在关闭字典标签之前插入
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. 修改 YOUR_DOT_REVERSED_IOS_CLIENT_ID 为上一步复制的值

      Info.plist文件中,实际的反转客户端ID插入到URL方案中
    6. Command + S

  3. 修改 AppDelegate.swift

    1. 打开AppDelegate

      在Xcode项目导航器中打开AppDelegate.swift文件
    2. 插入 import GoogleSignIn 文件顶部

      AppDelegate.swift文件中添加GoogleSignIn导入
    3. 找到 func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) 函数

      AppDelegate中的原始openURL函数
    4. 修改函数使其看起来像这样

      func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
      // Called when the app was launched with a url. Feel free to add additional processing here,
      // but if you want the App API to support tracking app url opens, make sure to keep this call
      var handled: Bool
      handled = GIDSignIn.sharedInstance.handle(url)
      if handled {
      return true
      }
      return ApplicationDelegateProxy.shared.application(app, open: url, options: options)
      }
      修改应用程序的openURL函数,处理GoogleSignIn
    5. 另存为 Command + S

  4. 在JavaScript/TypeScript中设置Google登录(code)

    1. 导入 SocialLoginCapacitor

      import { SocialLogin } from '@capgo/capacitor-social-login';
      import { Capacitor } from '@capacitor/core';
    2. 调用初始化方法(应只调用一次)

      基本设置(在线模式 - 大多数应用程序推荐):

      // onMounted is Vue specific
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      iOSClientId: '673324426943-redacted.apps.googleusercontent.com',
      mode: 'online' // Default mode
      }
      })
      })

      高级设置(附加客户端ID):

      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: 'YOUR_WEB_CLIENT_ID', // Optional: for web platform support
      iOSClientId: 'YOUR_IOS_CLIENT_ID', // Required: from step 1
      iOSServerClientId: 'YOUR_WEB_CLIENT_ID', // Optional: same as webClientId, needed for some advanced features
      mode: 'online' // 'online' or 'offline'
      }
      })
      })
    3. 实现登录函数。创建一个按钮并在点击时运行以下code

      在线模式:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response - contains user data
      console.log(JSON.stringify(res))

      离线模式:

      const res = await SocialLogin.login({
      provider: 'google',
      options: {
      forceRefreshToken: true // Recommended for offline mode
      }
      })
      // res contains serverAuthCode, not user data
      // Send serverAuthCode to your backend to get user information
      // Do not call SocialLogin.refresh() in offline mode
      console.log('Server auth code:', res.result.serverAuthCode)
  5. 测试您的应用

    1. 构建您的应用并运行 cap sync

    2. 如果您一切都正确完成了,您应该看到Google登录流程正常工作

      iOS上的Google登录流程演示,显示登录过程和成功验证

隐私屏幕插件不兼容

标题:隐私屏幕插件不兼容

Google 登录插件与 @capacitor/privacy-screen当同时使用这两个插件时,Google 登录 webview 将被隐私屏幕中断。

解决方法: 在调用登录函数之前 await PrivacyScreen.disable(); 复制到剪贴板

import { PrivacyScreen } from '@capacitor/privacy-screen';
import { SocialLogin } from '@capgo/capacitor-social-login';
await PrivacyScreen.disable();
await SocialLogin.login({
provider: 'google',
options: {}
});

如果您正在使用 Google 登录 来规划认证和账户流程,连接它 使用 @capgo/capacitor-social-login 为 iOS 原生能力在使用 @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 的实现细节 双重认证 双重认证的实现细节。