跳过内容

Google 登录 iOS

GitHub

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

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

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

    1. 点击搜索栏

      Google 控制台搜索栏
    2. 在搜索栏中输入 credentials 并点击第二个结果(截图中的第 2 项) APIs and Services Google Console search bar

      显示凭据选项的搜索结果,APIs 和 Services 高亮
    3. 点击 Google Console 中的 create credentials

      创建凭据按钮
    4. 选择 OAuth client ID

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

      应用类型选择,iOS 选项高亮
    6. 找到 bundle ID

      1. 打开 Xcode

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

        应用目标
      3. 确保您已在 Targets -> App

        Xcode中的Targets部分
      4. 找到您的 Bundle Identifier

        Bundle Identifier字段在Xcode项目设置中
      5. 返回Google控制台并将您的 Bundle Identifier 输入 Bundle ID

        Bundle ID字段在Google控制台iOS客户端创建表单中
    7. 可选地,添加您的 App Store IDTeam ID 如果您已发布应用程序到App Store,则将其输入到客户端ID中

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

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

      确认创建的客户端 ID 对话框上的确定按钮
    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. Setup Google login in your JavaScript/TypeScript 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 iOS 登录 来规划身份验证和帐户流程,连接它到 使用 @capgo/capacitor 社交登录 为 @capgo/capacitor 社交登录中的本机能力 @capgo/capacitor 社交登录 为 @capgo/capacitor 社交登录中的实现细节 @capgo/capacitor-passkey 为 @capgo/capacitor-passkey 中的实现细节 @capgo/capacitor-native-biometric 为 @capgo/capacitor-native-biometric 中的实现细节 双因素验证 双因素验证的实现细节。