認証
認証メソッドを使用する前に設定を完了してください。
プラットフォームごとの動作
| Method | Android | iOS | Web |
|---|---|---|---|
login |
対応 | 既定でLimited Login | 対応 |
logout |
対応 | 対応 | 対応 |
reauthorize |
対応 | 対応 | 未実装 |
getCurrentAccessToken |
対応 | Limited Login token | 対応 |
getProfile |
対応 | Graph tokenが必要 | 対応 |
tracking login optionはiOS専用で、既定値はlimitedです。Limited Loginでは、iOSはGraph API access tokenではなくOIDC authentication token(JWT)を返します。現在のプラグインはtracking: 'enabled'で取得したGraph access tokenを返しません。
nonce optionはAndroidとiOSで使用され、Webでは無視されます。raw nonceを渡してください。ネイティブ実装がFacebook SDKへ渡す前にhash化します。
ログイン
アプリが使用する権限だけをリクエストします。
import { FacebookLogin } from '@capacitor-community/facebook-login';
const result = await FacebookLogin.login({
permissions: ['email', 'user_birthday'],
});
if (result.accessToken) {
console.log(`Facebook token: ${result.accessToken.token}`);
} else {
// No token was returned by the native platform.
}
WebではFacebookが使用可能なtokenを返さない場合にrejectします。AndroidとiOSではログインをキャンセルするとtokenなしでresolveします。
iOSのtracking modeとnonce
const result = await FacebookLogin.login({
permissions: ['email'],
tracking: 'limited',
nonce: crypto.randomUUID(),
});
Limited Login tokenはbackendでOIDC tokenとして検証してください。Graph API access tokenとして扱わないでください。
現在のtoken
const result = await FacebookLogin.getCurrentAccessToken();
if (result.accessToken) {
console.log(`Current Facebook token: ${result.accessToken.token}`);
}
ログアウト中、ネイティブプラットフォームはtokenなしでresolveします。WebはFacebook sessionが接続されていない場合にrejectします。
プロフィール項目
const profile = await FacebookLogin.getProfile<{
id: string;
email?: string;
}>({ fields: ['id', 'email'] });
項目はMetaアプリで許可され、ユーザーから権限を付与されている必要があります。返されるobjectにはGraph APIが返した項目だけが含まれます。iOSではGraph access tokenが必要であり、既定のLimited Login tokenでは動作しません。
データアクセスの再認証
再認証はAndroidとiOSでのみ利用できます。
const result = await FacebookLogin.reauthorize();
if (result.accessToken) {
console.log('Data access was renewed.');
}
ログアウト
await FacebookLogin.logout();
ログアウトすると、プラットフォームSDKが管理するFacebook sessionが消去されます。