概览
“概览”章节@capgo/capacitor-social-login 是适用于 Web、iOS 和 Android 的一站式社交登录插件。
它实现了:
- 结合 Android Credential Manager 的 Google Sign-In
- Sign in with Apple(包括 Android 端的 OAuth)
- 基于当前 Facebook SDK 的 Facebook Login
- 通过 OAuth 2.0 接入的 Twitter/X
- 通用 OAuth2 和 OIDC 提供商,包括 GitHub、Microsoft Entra ID、Auth0、Okta、Keycloak 以及其他兼容服务器
对于从 Ionic Appflow Social Login 或 Ionic Auth Connect 迁移的应用,它也是 Capgo 迁移路径。
Fork 与迁移说明
“Fork 与迁移说明”章节此插件最初是基于以下项目 fork 开发的: @codetrix-studio/capacitor-google-auth。由于原软件包已基本停止维护,因此 Capgo 负责维护此插件,作为其官方替代方案。
如果您仍在使用 @codetrix-studio/capacitor-google-auth,请参考 旧版 Google Auth 迁移指南.
如果您正从 Ionic Auth Connect 迁移,请使用内置的 SocialLoginAuthConnect 包装器 (wrapper) 来处理 auth0, azure, cognito, okta,以及 onelogin 提供商名称:
兼容性
“兼容性”章节| 插件版本 | Capacitor 兼容性 | 持续维护 |
|---|---|---|
| v8.x | v8.x | 是 |
| v7.x | v7.x | 按需使用 |
| v6.x | v6.x | 否 |
| v5.x | v5.x | 否 |
此插件的主版本号与 Capacitor 的主版本号保持一致。例如,请配合 Capacitor 8 使用插件 v8。我们仅对最新的主版本进行积极维护。
视频演示
标题为“视频演示”的部分观看插件配置及登录流程的快速演示。
核心功能
标题为“核心功能”的章节initialize- 初始化插件。login- 使用选定的提供商登录。logout- 退出登录。isLoggedIn- IsLoggedIn。
公开 API
标题为“公开 API”的章节| 方法 | 描述 |
|---|---|
initialize | 初始化插件。 |
login | 使用选定的提供商登录。 |
logout | 退出登录。 |
isLoggedIn | IsLoggedIn. |
getAuthorizationCode | 获取当前授权 code。 |
refresh | 刷新 access token。 |
refreshToken | 内置 OAuth2 provider 的 OAuth2 refresh token 辅助工具。 |
handleRedirectCallback | 仅限 Web:处理 OAuth 重定向回调并返回解析结果。 |
decodeIdToken | 将 JWT(通常是 OIDC ID token)解码为 claims。 |
getAccessTokenExpirationDate | 将 access token 过期时间戳(自 epoch 起的毫秒数)转换为 ISO 日期字符串。 |
isAccessTokenAvailable | 检查 access token 是否可用(非空)。 |
isAccessTokenExpired | 检查 access token 是否已过期。 |
isRefreshTokenAvailable | 检查 refresh token 是否可用(非空)。 |
providerSpecificCall | 执行 provider 特定的调用。 |
getPluginVersion | 获取原生 Capacitor 插件版本。 |
openSecureWindow | 打开一个安全的 OAuth2 认证窗口。对于 Web 端,你需要在重定向页面中包含 code,以便通过 broadcast channel 将重定向 URL 发送回 App。示例如下: html <html> <head></head> <body> <script> const searchParams = new URLSearchParams(location.search) if (searchParams.has("code")) { new BroadcastChannel("my-channel-name").postMessage(location.href); window.close(); } </script> </body> </html> 对于移动端,你需要一个可以唤起 App 的重定向 URI,示例如下: myapp://oauth_callback/ 并确保在 App 的 info.plist 中进行了注册: xml <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> </array> </dict> </array> 以及在 AndroidManifest.xml 文件中: xml <activity> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="oauth_callback" android:scheme="myapp" /> </intent-filter> </activity> . |
单一事实来源
标题为“单一事实来源”的部分此参考文档同步自 src/definitions.ts 中的 capacitor-social-login.
从 @capgo/capacitor-social-login 继续
标题为“从 @capgo/capacitor-social-login 继续”的部分如果你正在使用 @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 的实现细节, 双因素认证 有关双因素认证的实现细节,以及 SSO (企业版) 有关 SSO (Enterprise) 的实现细节。