)スマートフォン用の表示で見るうな(。まわりのめもめもこの広告は、90日以上更新していないブログに表示しています。2016-02-10iCloudのユーザIDを使って、端末を移行したユーザをセキュアに紐付けるiOSアプリのデータを新しいiPhoneに移行したい!というのはよくあるニーズだと思います。Documentsを使ってアプリを作っていれば良いのですが、デバッグのしやすさなどの兼ね合いから自社サーバを使っているところが大半だと思います。データの移行のためには安全にIDを紐付ける必要があります。各種SNSでのSSOを使った紐付けかと思います。一つに事前にユーザにアカウントを作ってもらってから移行してもらうことの運用の難しさです。パスワードというのは簡単に忘れるものであり、そのパスワードを送るためのメールアドレスでさえ変わったり、忘れたりすることがしょっちゅうです。二つに日本においてはほぼ確実に間違いなくアカウントを所持しているSNSは存在しません。LINEくらいでしょうか。そのLINEでさえも、IDの紐付けはわりと無頓着であり、携帯を替えるたびにLINEアカウントが変わるのはしょっちゅうです。紐付けたSNSがなんだったのかを忘れてしまうこともしょっちゅうですね。他には、電話番号認証は良い手段ですが、実は電話番号は廃止後使いまわせてしまうので、セキュアに紐付けることはできません。他にも、QRコードなどを使って認証情報を移行するのも一つの手段ですが、実は確実ではありません。携帯を変えるときは古いスマホをその場で下取りに出してしまうことが多いからです。使える?上述の問題が全て解決されるわけではありません。アカウントを移行できる可能性を一つでも上げるため、サポート用のロジックを用意することを考えます。IDを使えば紐付けは可能ではないでしょうか。Password忘れ防止など利便性を向上することができれば良いですね。結論から言えば、iCloudの提供するCloudKitを使えば紐付けが可能です。fetchUserRecordIDWithCompletionHandler:です。このメソッドはiCloudユーザに一意のユーザレコードを取得します。33文字の文字列IDとなっています。このIDは特定アプリのなかのiCloudユーザに一意です。recordNameを取得したとしても、それは違う値になります。取得できるのは次のような文字列であり、次のようなコードで取得することができます。recordID.recordName);}];このIDは36^32通りの名前空間がありますから推論は極めて困難ですが、もう一段階ロックを付ければよりセキュアです。Containerがあります。Containerに十分長いキーsecretを保存しておけば2つの十分長いトークンで認証を行うことができ、セキュアです。フローとしては、次のようになります。Containerに格納します。secretを送信します。携帯を移行してアプリを起動したとき、recordID.recordNameを取得します。Containerから取得します。これらの値を自社サーバに送信し、(2)で送ったものと同一かどうかを確かめます。(4)が成功すれば、端末Aと端末Bは紐付けされ、同一ユーザとみなすことができます。コードの注意点としては、secretの書き込みはいわゆるFindOrInsert処理になります。取得する月別アーカイブはてなブログをはじめよう!liedderoptikさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?はてなブログをはじめる(無料)はてなブログとはうな(。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。