将 Ionic Auth Connect 迁移至 @capgo/capacitor-social-login
复制包含安装步骤和该插件完整 Markdown 指南的配置 prompt。
概览
“概览”章节Capgo Social Login 取代了 Ionic Auth Connect,为 Google、Apple、Facebook 及其他身份提供商提供原生 OAuth2 流程。它支持在单个插件中集成多个提供商,并兼容 iOS、Android 和 Web。
为什么有效
“为什么这行得通”章节该插件包含一个名为 SocialLoginAuthConnect的 Auth Connect 兼容层。它将熟悉的 Ionic Auth Connect 提供商 ID 映射到内置的 OAuth2 引擎,因此您可以继续使用诸如 auth0, azure,以及 okta.
安装
“安装”章节npm install @capgo/capacitor-social-loginnpx cap sync替换您的 import
“替换您的 import”章节// Beforeimport { AuthConnect } from '@ionic-enterprise/auth-connect';
// Afterimport { SocialLoginAuthConnect } from '@capgo/capacitor-social-login';初始化提供商
标题为“初始化提供商”的章节使用 authConnect 如果您希望使用与 Ionic Auth Connect 相同的提供商 ID,请使用以下预设:
await SocialLoginAuthConnect.initialize({ authConnect: { auth0: { domain: 'https://your-tenant.auth0.com', clientId: 'your-auth0-client-id', redirectUrl: 'myapp://oauth/auth0', audience: 'https://your-api.example.com', }, azure: { tenantId: 'common', clientId: 'your-azure-client-id', redirectUrl: 'myapp://oauth/azure', }, cognito: { domain: 'https://your-domain.auth.region.amazoncognito.com', clientId: 'your-cognito-client-id', redirectUrl: 'myapp://oauth/cognito', }, okta: { issuer: 'https://dev-12345.okta.com/oauth2/default', clientId: 'your-okta-client-id', redirectUrl: 'myapp://oauth/okta', }, onelogin: { issuer: 'https://your-tenant.onelogin.com/oidc/2', clientId: 'your-onelogin-client-id', redirectUrl: 'myapp://oauth/onelogin', }, },});支持的提供商 ID
标题为“支持的提供商 ID”的章节auth0azurecognitooktaonelogin
登录、登出和 token 访问
标题为“登录、登出和 token 访问”的章节const result = await SocialLoginAuthConnect.login({ provider: 'auth0',});
const status = await SocialLoginAuthConnect.isLoggedIn({ provider: 'auth0',});
const code = await SocialLoginAuthConnect.getAuthorizationCode({ provider: 'auth0',});
await SocialLoginAuthConnect.logout({ provider: 'auth0',});特定提供商的预设示例
标题为“特定提供商的预设示例”的章节Auth0 预设示例
标题为“Auth0 预设示例”的章节await SocialLoginAuthConnect.initialize({ authConnect: { auth0: { domain: 'https://your-tenant.auth0.com', clientId: 'your-auth0-client-id', redirectUrl: 'myapp://oauth/auth0', audience: 'https://your-api.example.com', }, },});
const auth0Result = await SocialLoginAuthConnect.login({ provider: 'auth0',});
console.log(auth0Result.result.idToken);Azure 预设示例
标题为“Azure 预设示例”的章节await SocialLoginAuthConnect.initialize({ authConnect: { azure: { tenantId: 'common', clientId: 'your-azure-client-id', redirectUrl: 'myapp://oauth/azure', }, },});
const azureResult = await SocialLoginAuthConnect.login({ provider: 'azure',});
console.log(azureResult.result.resourceData);Cognito 预设示例
“Cognito 预设示例”部分await SocialLoginAuthConnect.initialize({ authConnect: { cognito: { domain: 'https://your-domain.auth.region.amazoncognito.com', clientId: 'your-cognito-client-id', redirectUrl: 'myapp://oauth/cognito', }, },});
const cognitoResult = await SocialLoginAuthConnect.login({ provider: 'cognito',});
console.log(cognitoResult.result.idToken);Okta 预设示例
“Okta 预设示例”部分await SocialLoginAuthConnect.initialize({ authConnect: { okta: { issuer: 'https://dev-12345.okta.com/oauth2/default', clientId: 'your-okta-client-id', redirectUrl: 'myapp://oauth/okta', }, },});
const oktaResult = await SocialLoginAuthConnect.login({ provider: 'okta',});
console.log(oktaResult.result.resourceData);OneLogin 预设示例
“OneLogin 预设示例”部分await SocialLoginAuthConnect.initialize({ authConnect: { onelogin: { issuer: 'https://your-tenant.onelogin.com/oidc/2', clientId: 'your-onelogin-client-id', redirectUrl: 'myapp://oauth/onelogin', }, },});
const oneloginResult = await SocialLoginAuthConnect.login({ provider: 'onelogin',});
console.log(oneloginResult.result.idToken);覆盖端点
“覆盖端点”部分每个预设都会从以下来源创建默认的 OAuth2 配置: domain 或 issuer。如果您的租户使用自定义端点,请直接覆盖它们:
await SocialLoginAuthConnect.initialize({ authConnect: { onelogin: { issuer: 'https://your-tenant.onelogin.com/oidc/2', clientId: 'your-onelogin-client-id', redirectUrl: 'myapp://oauth/onelogin', authorizationBaseUrl: 'https://your-tenant.onelogin.com/oidc/2/auth', accessTokenEndpoint: 'https://your-tenant.onelogin.com/oidc/2/token', resourceUrl: 'https://your-tenant.onelogin.com/oidc/2/me', logoutUrl: 'https://your-tenant.onelogin.com/oidc/2/logout', }, },});直接配置 OAuth2
标题为“直接 OAuth2 配置”的章节如果您不想使用预设,请在通用 OAuth2 文档中直接配置相同的提供商:
迁移说明
标题为“迁移说明”的章节-
兼容层基于 OAuth2 它保留提供商名称,而非 Ionic 的原生实现细节。
-
刷新令牌仍依赖 scopes 请求
offline_access或需要刷新令牌时,使用对应提供商的等效项。 -
自定义端点可覆盖预设 如果预设接近但不完全一致,只覆盖有差异的端点。
-
直接
oauth2条目优先 如果同时定义两者authConnect.auth0以及oauth2.auth0,则直接oauth2配置优先。
相关文档
“相关文档”章节继续从 Ionic Auth Connect 迁移到 @capgo/capacitor-social-login
从 Ionic Auth Connect 迁移到 @capgo/capacitor-social-login 的章节标题如果你正在使用 将 Ionic Auth Connect 迁移至 @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 中的实现细节, 双因素认证 有关双重身份验证的实现细节。