跳过内容

Google 登录在 iOS 上

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

在 iOS 中使用 Google 登录

标题为“在 iOS 中使用 Google 登录”

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

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

    1. 点击搜索栏

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

      显示包含 API 和服务的凭据选项的搜索结果
    3. 点击 Google 控制台中的 create credentials

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

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

      应用类型选择中 iOS 选项被突出显示
    6. 找到 bundle ID

      1. 打开 Xcode

      2. 双击 Xcode 项目导航器中的 App

        确保您在 Xcode 中
      3. 在 Xcode 中选择 App 的 Targets -> App

        找到您的
      4. 在 Xcode 项目设置中的 Bundle Identifier

        返回 Google 控制台并将您的
      5. Bundle Identifier 可选地,添加您的 Bundle ID

        或
    7. __CAPGO_KEEP_0__ App Store ID __CAPGO_KEEP_0__ Team ID 如果您已经将应用程序发布到 App Store,则需要将此客户端 ID 输入到客户端 ID 中

    8. 填写所有详细信息后,点击 create

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

      创建客户端 ID 确认对话框上的确定按钮
    10. 打开新创建的 iOS 客户端

      凭据列表中的新创建的 iOS 客户端
    11. 复制以下数据

      复制客户端 ID 详情,包括客户端 ID 和反向客户端 ID
  2. 修改您的应用程序的Info.plist

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

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

      右键菜单显示Open As Source Code选项
    3. 您的应用程序的底部 Plist 您将看到一个文件 </dict> 标签

      Info.plist 文件中的关闭字典标签
    4. 在关闭标签之前,插入以下片段 </dict> Info.plist 文件,包含 URL 方案 __CAPGO_KEEP_0__ 在关闭字典标签之前

      Info.plist with URL schemes code inserted before closing dict tag
      <key>CFBundleURLTypes</key>
      <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
      <string>YOUR_DOT_REVERSED_IOS_CLIENT_ID</string>
      </array>
      </dict>
      </array>
    5. Info.plist 文件,包含实际反转的客户端 ID 在 URL 方案中 YOUR_DOT_REVERSED_IOS_CLIENT_ID 注意

      注意
    6. 保存文件 Command + S

  3. 修改 AppDelegate.swift

    1. 在 Xcode 项目导航器中打开 AppDelegate 文件

      在文件顶部
    2. 在 AppDelegate.swift 文件中添加 GoogleSignIn 导入 import GoogleSignIn 找到

      函数
    3. __CAPGO_KEEP_0__ func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) __CAPGO_KEEP_0__

      原生应用 openURL 函数在 AppDelegate 中
    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
      }
      })
      })

      __CAPGO_KEEP_0__

      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(); __CAPGO_KEEP_0__:

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