一般的なOAuth2 プロバイダー
このプラグインのインストールステップとフルマークダウンガイドを含むセットアップの質問をコピーする。
CapgoのSocial Loginプラグインには、OAuth2およびOpenID Connectエンジンが組み込まれています。任意の標準ベースのIDプロバイダーを接続できます。
- GitHub
- Azure AD / Microsoft Entra ID
- Auth0
- Okta
- Keycloak
- カスタムOAuth2またはOIDCサーバー
The oauth2 複数のプロバイダーをデザイン上サポートしています。複数のプロバイダーを一度に登録し、ログイン時には1つを選択できます。 providerId.
必要なもの
必要なものプロバイダーを設定する前に、以下の情報を収集してください。
- OAuthクライアントID
- アプリスキームまたはWebコールバックURLに一致するリダイレクトURL
- 認証エンドポイント
- 認証フローcodeのために認証トークンエンドポイント、またはOIDCディスカバリ
issuerUrl必要なスコープ、例えば - 複数のプロバイダーをサポートする設定
openid profile email
複数のプロバイダーをサポートする設定
multi-provider configuration使用 SocialLogin.initialize() アプリ起動時に一度だけ実行し、必要なすべてのプロバイダーを登録する:
import { SocialLogin } from '@capgo/capacitor-social-login';
await SocialLogin.initialize({ oauth2: { github: { appId: 'your-github-client-id', authorizationBaseUrl: 'https://github.com/login/oauth/authorize', accessTokenEndpoint: 'https://github.com/login/oauth/access_token', redirectUrl: 'myapp://oauth/github', scope: 'read:user user:email', pkceEnabled: true, resourceUrl: 'https://api.github.com/user', }, azure: { appId: 'your-azure-client-id', authorizationBaseUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', accessTokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token', redirectUrl: 'myapp://oauth/azure', scope: 'openid profile email User.Read', pkceEnabled: true, resourceUrl: 'https://graph.microsoft.com/v1.0/me', }, auth0: { issuerUrl: 'https://your-tenant.auth0.com', appId: 'your-auth0-client-id', redirectUrl: 'myapp://oauth/auth0', scope: 'openid profile email offline_access', pkceEnabled: true, additionalParameters: { audience: 'https://your-api.example.com', }, }, },});OIDC discoveryとエイリアス
「OIDC discoveryとエイリアス」のセクションプロバイダーがOpenID Connectのディスカバリードキュメントを公開している場合、 issuerUrl 最も簡単な設定:
await SocialLogin.initialize({ oauth2: { keycloak: { issuerUrl: 'https://sso.example.com/realms/mobile', clientId: 'mobile-app', redirectUrl: 'myapp://oauth/keycloak', scope: 'openid profile email offline_access', pkceEnabled: true, }, },});プラグインは、一般的なOAuthおよびOIDCエイリアスもサポートしています:
clientIdエイリアスとしてappIdauthorizationEndpointエイリアスとしてauthorizationBaseUrltokenEndpointエイリアスとしてaccessTokenEndpointendSessionEndpointas an alias oflogoutUrlscopesas an alias ofscope
Also available:
additionalParametersfor auth request overridesadditionalTokenParametersfor token exchange overridesadditionalResourceHeadersfor custom resource endpoint headersadditionalLogoutParametersandpostLogoutRedirectUrlfor logout flowsloginHint,prompt, andiosPrefersEphemeralSession
Auth Connect-compatible presets
Auth Connectから移行している場合、同じプロバイダ名を維持したい場合は、]} The translations are as follows: SocialLoginAuthConnect.
import { SocialLoginAuthConnect } from '@capgo/capacitor-social-login';
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', }, okta: { issuer: 'https://dev-12345.okta.com/oauth2/default', clientId: 'your-okta-client-id', redirectUrl: 'myapp://oauth/okta', }, },});サポートされているプリセット プロバイダ ID:
auth0azurecognitooktaonelogin
プロバイダがカスタム エンドポイントが必要な場合、プリセットをオーバーライドするか、プリセットを回避してプロバイダを直接設定する必要があります。 oauth2.
構成オプション
「構成オプション」のセクション| オプション | タイプ | 必要 | 説明 |
|---|---|---|---|
appId / clientId | 文字列 | はい | OAuth2 クライアント ID |
issuerUrl | string | No | OIDC |
authorizationBaseUrl / authorizationEndpoint | string | Yes* | Authorization |
accessTokenEndpoint / tokenEndpoint | string | No* | Token |
redirectUrl | string | Yes | Callback |
scope / scopes | 文字列 / 文字列[] | しない | 要求されたスコープ |
pkceEnabled | ブール値 | しない | デフォルト値 true |
responseType | 'code' または 'token' | しない | デフォルト値 'code' |
resourceUrl | 文字列 | しない | ユーザー情報またはリソースエンドポイント |
logoutUrl / endSessionEndpoint | string | No | Logout or end-session URL |
postLogoutRedirectUrl | string | No | Redirect URL after logout |
additionalParameters | Record<string, string> | No | Extra auth request params |
additionalTokenParameters | Record<string, string> | No | Extra token request params |
additionalResourceHeaders | Record<string, string> | No | Extra headers for resourceUrl |
additionalLogoutParameters | Record<string, string> | しない | __CAPGO_KEEP_0__ |
loginHint | 文字列 | しない | __CAPGO_KEEP_1__ additionalParameters.login_hint |
prompt | 文字列 | しない | __CAPGO_KEEP_2__ additionalParameters.prompt |
iosPrefersEphemeralSession | ブール値 | しない | __CAPGO_KEEP_3__ |
logsEnabled | iOSでephemeralブラウザセッションを優先する | No | 詳細なデバッグ ロギングを有効にする |
authorizationBaseUrl と accessTokenEndpoint は、発見に十分です。Explicitエンドポイントは、発見された値よりも優先されます。 issuerUrl OAuth2 ログインを使用する
セクション:OAuth2 ログインを使用する
ログインセクション:ログイン
コピーconst result = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'github', scope: 'read:user user:email', loginHint: 'user@example.com', },});セクション:Web上でのリダイレクトフロー
Section titled “Redirect flow on web”使用するには、フルページリダイレクトをポップアップの代わりに使用します。 flow: 'redirect' if you want a full-page redirect instead of a popup:
await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'auth0', flow: 'redirect', },});コピー
const result = await SocialLogin.handleRedirectCallback();if (result?.provider === 'oauth2') { console.log(result.result.providerId);}ログイン状態とログアウト
Section titled “Login status and logout”const status = await SocialLogin.isLoggedIn({ provider: 'oauth2', providerId: 'github',});
await SocialLogin.logout({ provider: 'oauth2', providerId: 'github',});リフレッシュトークン
Section titled “Refresh tokens”await SocialLogin.refresh({ provider: 'oauth2', options: { providerId: 'github', },});
const refreshed = await SocialLogin.refreshToken({ provider: 'oauth2', providerId: 'github', refreshToken: 'existing-refresh-token',});refresh() refresh tokensを使用します。 refreshToken() あなた自身でリフレッシュトークンを渡して、最新のOAuth2レスポンスを返します。
現在のアクセストークンを取得する
「現在のアクセストークンを取得する」セクションconst code = await SocialLogin.getAuthorizationCode({ provider: 'oauth2', providerId: 'github',});
console.log(code.accessToken);プロバイダ固有の例
「プロバイダ固有の例」セクションGitHubの例
「GitHubの例」セクションGitHubを使用すると、シンプルなOAuthアプリフローと基本的なプロファイルデータを取得できます。
await SocialLogin.initialize({ oauth2: { github: { appId: 'your-github-client-id', authorizationBaseUrl: 'https://github.com/login/oauth/authorize', accessTokenEndpoint: 'https://github.com/login/oauth/access_token', redirectUrl: 'myapp://oauth/github', scope: 'read:user user:email', pkceEnabled: true, resourceUrl: 'https://api.github.com/user', }, },});
const githubResult = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'github', },});
console.log(githubResult.result.accessToken?.token);console.log(githubResult.result.resourceData);Azure AD / Microsoft Entra IDの例
「Azure AD / Microsoft Entra IDの例」セクションMicrosoft グラフデータが必要な場合は、Azure を使用してください。
await SocialLogin.initialize({ oauth2: { azure: { appId: 'your-azure-client-id', authorizationBaseUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', accessTokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token', redirectUrl: 'myapp://oauth/azure', scope: 'openid profile email User.Read', pkceEnabled: true, resourceUrl: 'https://graph.microsoft.com/v1.0/me', }, },});
const azureResult = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'azure', },});
console.log(azureResult.result.idToken);console.log(azureResult.result.resourceData);Auth0 の例
「Auth0 の例」OIDC とカスタム API の聴衆が必要な場合は、Auth0 が適切です。
await SocialLogin.initialize({ oauth2: { auth0: { appId: 'your-auth0-client-id', authorizationBaseUrl: 'https://your-tenant.auth0.com/authorize', accessTokenEndpoint: 'https://your-tenant.auth0.com/oauth/token', redirectUrl: 'myapp://oauth/auth0', scope: 'openid profile email offline_access', pkceEnabled: true, additionalParameters: { audience: 'https://your-api.example.com', }, }, },});
const auth0Result = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'auth0', flow: 'redirect', },});Web でのリダイレクトフローを使用する場合は、コールバックページで結果を読み戻してください。
const auth0Result = await SocialLogin.handleRedirectCallback();if (auth0Result?.provider === 'oauth2') { console.log(auth0Result.result.idToken);}Okta の例
「Okta の例」await SocialLogin.initialize({ oauth2: { okta: { appId: 'your-okta-client-id', authorizationBaseUrl: 'https://your-domain.okta.com/oauth2/default/v1/authorize', accessTokenEndpoint: 'https://your-domain.okta.com/oauth2/default/v1/token', redirectUrl: 'myapp://oauth/okta', scope: 'openid profile email offline_access', pkceEnabled: true, resourceUrl: 'https://your-domain.okta.com/oauth2/default/v1/userinfo', }, },});
const oktaResult = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'okta', },});
console.log(oktaResult.result.resourceData);Keycloak の例
Keycloak の例プロバイダーが公開している場合に、ディスカバリーを使用してください。 /.well-known/openid-configuration:
await SocialLogin.initialize({ oauth2: { keycloak: { issuerUrl: 'https://sso.example.com/realms/mobile', clientId: 'mobile-app', redirectUrl: 'myapp://oauth/keycloak', scope: 'openid profile email offline_access', pkceEnabled: true, }, },});
const keycloakResult = await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'keycloak', },});
console.log(keycloakResult.result.idToken);OAuth2 の応答の形状
OAuth2 の応答の形状OAuth2 のログインが成功すると、次の値が返されます。
| フィールド | ログインに使用される設定済みのプロバイダー キー |
|---|---|
providerId | アクセストークンのペイロードまたは |
accessToken | プロバイダーが返した場合の OIDC ID トークン null |
idToken | リフレッシュ トークンが要求されたスコープで許可されていた場合 |
refreshToken | クリップボードにコピー |
resourceData | Raw JSON fetched from resourceUrl |
scope | スコープが付与された |
tokenType | 通常 bearer |
expiresIn | 秒単位のトークン有効期限 |
プロバイダーのセットアップリファレンス
プロバイダーのセットアップリファレンスGitHub
GitHub-
OAuthアプリを作成する 開く GitHub開発者設定 と新しいOAuthアプリを作成する.
-
コールバック URL を設定する アプリのリダイレクト URL を使用してください。例えば
myapp://oauth/github. -
プラグインを設定する
await SocialLogin.initialize({oauth2: {github: {appId: 'your-github-client-id',authorizationBaseUrl: 'https://github.com/login/oauth/authorize',accessTokenEndpoint: 'https://github.com/login/oauth/access_token',redirectUrl: 'myapp://oauth/github',scope: 'read:user user:email',pkceEnabled: true,resourceUrl: 'https://api.github.com/user',},},});
Azure AD / Microsoft Entra ID
Azure AD / Microsoft Entra ID のセクション-
アプリを登録する Azure ポータルに移動し、
App registrationsネイティブまたはモバイル アプリの登録を作成する。 -
リダイレクト URI を追加する アプリのコールバック URL と一致するモバイルまたはデスクトップのリダイレクト URI を追加する。
-
プラグインを設定する
await SocialLogin.initialize({oauth2: {azure: {appId: 'your-azure-client-id',authorizationBaseUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',accessTokenEndpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',redirectUrl: 'myapp://oauth/azure',scope: 'openid profile email User.Read',pkceEnabled: true,resourceUrl: 'https://graph.microsoft.com/v1.0/me',},},});
Auth0
「Auth0」タイトルのセクション-
ネイティブアプリケーションを作成 Auth0 ダッシュボードを開き、ネイティブアプリを作成 許可されたコールバックURLを設定 「Auth0」
-
Set allowed callback URLs Capacitorアプリが使用する正確なリダイレクトURLを追加します。
-
プラグインの設定
await SocialLogin.initialize({oauth2: {auth0: {appId: 'your-auth0-client-id',authorizationBaseUrl: 'https://your-tenant.auth0.com/authorize',accessTokenEndpoint: 'https://your-tenant.auth0.com/oauth/token',redirectUrl: 'myapp://oauth/auth0',scope: 'openid profile email offline_access',pkceEnabled: true,additionalParameters: {audience: 'https://your-api.example.com',},logoutUrl: 'https://your-tenant.auth0.com/v2/logout',},},});
Okta
Oktaというセクション-
OIDCネイティブアプリを作成 Okta管理コンソールでOIDCネイティブアプリケーションを作成します。
-
リダイレクトURIを追加 __CAPGO_KEEP_0__アプリが使用する正確なコールバックURLを登録します。
-
プラグインの設定
await SocialLogin.initialize({oauth2: {okta: {appId: 'your-okta-client-id',authorizationBaseUrl: 'https://your-domain.okta.com/oauth2/default/v1/authorize',accessTokenEndpoint: 'https://your-domain.okta.com/oauth2/default/v1/token',redirectUrl: 'myapp://oauth/okta',scope: 'openid profile email offline_access',pkceEnabled: true,resourceUrl: 'https://your-domain.okta.com/oauth2/default/v1/userinfo',},},});
KeycloakおよびカスタムOIDCプロバイダー
KeycloakとカスタムOIDCプロバイダーOpenID Connectの自動検出がサポートされている場合、 issuerUrl:
await SocialLogin.initialize({ oauth2: { keycloak: { issuerUrl: 'https://sso.example.com/realms/mobile', clientId: 'mobile-app', redirectUrl: 'myapp://oauth/keycloak', scope: 'openid profile email offline_access', pkceEnabled: true, }, },});自動検出が利用できない場合、認可とトークンエンドポイントを手動で設定します。
プラットフォーム固有の注記
プラットフォーム固有の注記- プラグインは
ASWebAuthenticationSession. - 設定
iosPrefersEphemeralSession: trueプライベートブラウザセッションを使用する場合、共有クッキーが存在しません。
Android
Android- OAuthはアプリのスキームとホストを通じて戻ります。
- Androidのデープリンク設定と完全に一致するように、プロバイダーのコールバックURLを確実に設定してください。
- OAuthアクティビティはプラグインがすでに処理しています。アプリが異なるリダイレクトパターンを必要とする場合にのみ、カスタムのインテントフィルタを追加してください。
- プロバイダーがポップアップをブロックしている場合や、トップレベルナビゲーションを必要とする認証ルールがある場合、リダイレクトフローがより適しています。
- CORSによって直接ブラウザーのトークン交換がブロックされている場合、バックエンドの交換またはパブリッククライアントを許可するプロバイダーの設定を使用してください。
- セキュリティのベストプラクティス
セキュリティのベストプラクティス
PKCEを使用してください-
Section titled “Security best practices” __CAPGO_KEEP_0__
pkceEnabled: trueパブリッククライアント用に。 -
Prefer authorization code flow
responseType: 'code'バックエンドでトークンを検証する -
サーバー側で発行者、受信者、有効期限、署名を検証してデコードする リフレッシュトークンを安全に保存する
-
ネイティブアプリ用に、このプラグインを @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-persistent-account @capgo/capacitor-persistent-account.
-
プロダクション認証エンドポイントとログアウトエンドポイントは常にHTTPSを使用する トラブルシューティング
__CAPGO_KEEP_1__
Section titled “トラブルシューティング”providerId is required
Section titled “providerId は必須です”すべての OAuth2 メソッドでは、構成済みのプロバイダーキーが必要です:
await SocialLogin.login({ provider: 'oauth2', options: { providerId: 'github' },});OAuth2 provider "xxx" not configured
Section titled “OAuth2 プロバイダー "xxx" が構成されていません”Call SocialLogin.initialize() ログインする前に、 providerId プロバイダーのキーがオブジェクトのキーと一致することを確認してください。 oauth2.
リダイレクト URL の一致性が問題です
Section titled “リダイレクト URL の一致性が問題です”- アプリとプロバイダーのダッシュボードで、構成済みのリダイレクト URL を文字列単位で比較してください。
- 末尾のスラッシュ、スキームの不一致、ホストの差異などを注意してください。
- デバイスでテストする前に、モバイルアプリURLスキームを登録してください。
リフレッシュトークンが返されませんでした。
セクション:リフレッシュトークンが返されませんでした。ほとんどのサービスプロバイダは、スコープの要求や明示的な同意の強制など、特定の条件下でリフレッシュトークンを返します。サービスプロバイダごとのポリシーを確認してください。 offline_access トークン交換のデバッグ
セクション:トークン交換のデバッグ
有効サービスプロバイダの設定で、生成されたURLとトークン交換の詳細を表示するようにしてください。 logsEnabled: true 関連ドキュメント
セクション:関連ドキュメント
ソーシャルログインのスタートガイド一般的な OAuth2 プロバイダーから続ける
「一般的な OAuth2 プロバイダーから続ける」セクションCapacitor を使用している場合 一般的な OAuth2 プロバイダー 認証とアカウントフローの計画に使用し、Cloudflare の Capgo との接続 Capacitor の @capgo/capacitor-social-login を使用 Capacitor の @capgo/capacitor-social-login のネイティブ機能 Capacitor の @capgo/capacitor-social-login の実装詳細 Capacitor の @capgo/capacitor-passkey Capacitor の @capgo/capacitor-passkey の実装詳細 Capacitor の @capgo/capacitor-passkey @capgo/capacitor-native-biometric @capgo/capacitor-native-biometricの実装詳細について Two-factor authentication Two-factor authenticationの実装詳細について