先日、修正したアプリを Apple の審査に提出したところ、「Apple ID でログインする機能がないよ!やり直し!」と言われてしまいました。
…正直なところ、その存在をすっかり忘れてしまっており、現在慌てて実装しているところです。
で、実装にあたり、Cordova アプリで簡単に連携・Apple アカウントの情報を取得できるプラグインがあったので、こちらを導入しました。
「cordova-plugin-apple-login」 というプラグインで、GitHub のページはこちらから。
GitHub – pscsrv/cordova-plugin-apple-login
https://github.com/pscsrv/cordova-plugin-apple-login
インストールは下記のコマンドで行いました。
cordova plugin add cordova-plugin-apple-login --save
上記でも問題なくインストールできましたが、GitHub には下記のコマンドが記載してありました。
npm i cordova-plugin-apple-login --save
おそらくお好きな方を使用して貰えば問題ないかと思います。
インストールが完了したら、あとは下記のサンプルコードのように実装すればOKです!
SignInWithApple.isAvailable().then((isAvailable) => {
if (isAvailable) {
// Apple アカウントとの連携に成功 -> Apple アカウントの情報を取得する
SignInWithApple.request({
requestedScopes: [ SignInWithApple.Scope.Email, SignInWithApple.Scope.FullName ],
}).then((result) => {
// Apple アカウントの情報を取得した時の処理
});
} else {
// Apple アカウントとの連携に失敗した時の処理
}
});
まず 1行目では、そもそもアプリが Apple ログインを利用できるかを確認しています。
使用できる場合、変数 isAvailable に true が入るので、こちらの値によってアカウントを取得するか、エラーメッセージを表示するかを切り替えてください。
連携可能な場合は、4行目からの処理で Apple アカウントとアプリを連携し、アカウント情報を取得しています。
取得できる情報は下記の通りです。
こちらは GitHub にも掲載してありますので、そちらも参考にしてください。
{
authorizedScopes: [],
identityToken: 'identityToken',
authorizationCode: 'authorizationCode',
realUserStatus: 1,
fullName: {
namePrefix: null,
givenName: null,
nameSuffix: null,
middleName: null,
familyName: null,
nickname: null
},
email: null,
state: null,
user: 'userId'
}
なお、実際に動作させてみて分かったのですが、この Apple アカウントのメールアドレスと名前の項目は、初回連携の時は取得できますが、2回目以降は取得できないようです。
なので、動作確認で 1回連携をしてしまうと、今後メールアドレスと名前の項目が取得できなくなるため、端末側の設定から連携を解除する必要がありました。
連携の解除方法については、下記の Apple の公式サイトを参考にしてください。
「Apple でサインイン」を使っている App を管理する – Apple サポート
https://support.apple.com/ja-jp/HT210426#stopusingappleid
最初、これを知らなかったので何か設定にミスがあるのかも…と悩みました。
以上、Cordova アプリで Apple アカウントとの連携機能を簡単に実装できるプラグイン「cordova-plugin-apple-login」のご紹介でした。
ご参考になれば幸いです。