跳过内容

Ionic Auth Connect 迁移到 @capgo/capacitor-social-login

Capgo 社交登录替换了 Ionic Auth Connect 使用提供商原生 OAuth2 流程来实现 Google、Apple、Facebook 和其他身份提供商的登录功能。它支持多个提供商在一个插件中,并且在 iOS、Android 和 Web 平台上都有效。

该插件包含一个名为 Auth Connect 的兼容性包装器 SocialLoginAuthConnect它将熟悉的 Ionic Auth Connect 提供商 ID 映射到内置 OAuth2 引擎上,因此您可以继续使用名称如 auth0, azure,和 okta.

安装

安装
终端窗口
bun add @capgo/capacitor-social-login
bunx cap sync

替换你的导入

替换你的导入
// Before
import { AuthConnect } from '@ionic-enterprise/auth-connect';
// After
import { 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
  • auth0
  • azure
  • cognito
  • okta
  • onelogin

登录、注销和令牌访问

登录、注销和令牌访问
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 预设示例

复制到剪贴板
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);
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 配置从 domainissuer复制到剪贴板

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 和 OIDC 提供商指南

标题:迁移说明

兼容层基于 OAuth2
  1. 它保留了提供商名称,而不是 Ionic 的原生实现细节 It keeps the provider names, not __CAPGO_KEEP_0__'s native implementation details.

  2. 刷新令牌仍然依赖于作用域 请求 offline_access 或当您需要刷新令牌时,使用提供商特定的等效项

  3. 自定义端点可以覆盖预设 如果预设很接近但不是精确的,仅覆盖差异的端点

  4. 直接 oauth2 条目获胜 如果您定义了 authConnect.auth0oauth2.auth0,则直接 oauth2 配置优先

相关文档