パスワードが不要なメール認証の話と、Sign in with Apple に関わる App Store Review ガイドラインの話

ログイン | Annict 2020-08-10 01-21-07

ソーシャルログイン (Twitterでログインとか) のプロバイダが増える度に無限に対応していくのは破綻しそうだなと思ったので、MediumとかSlackがやってるようなログイン用のメールを送ってパスワード無しでログインできる仕組みを実装しています。
上の画像は開発中のもので、まだリリースしていないです。

これをやり始めたきっかけが Sign in with Apple 対応で、今はソーシャルログインできるサービスのiOSアプリを作るときは Sign in with Apple を追加しないとリジェクトされるとのことです。
https://developer.apple.com/jp/app-store/review/guidelines/#sign-in-with-apple
AnnictはTwitterとFacebookのアカウントでログインできるようになっているので、追加で Sign in with Apple に対応しないとリジェクトされてしまうそうです。

Sign in with Apple はもともと追加しようと思っていたので手をつけ始めたんですが、 思ってたよりも実装が面倒くさい こういうことがある度にソーシャルログインが増えていくのは厳しいのでは?と思うようになりました。
ログインページにボタンがどんどん増えていくとボタンだらけになってうわっ…ってなりますし、プロバイダごとの規約や仕様変更の追従が必要だったりで保守も大変です。
抱き合わせ販売感あって萎えたのも対応を再考するきっかけになりました。

幸いAnnictではTwitterやFacebookでログインするときにもメールアドレスの入力をお願いしているので、それならパスワードが不要なメール認証を追加するほうが良くない?となりました。現在提供しているTwitterやFacebookでログインする機能も、パスワードが不要なメール認証への反応次第ではいずれ廃止しようかなと思い始めています。

iOSアプリに関しては、OAuth認可するために作成するOAuthアプリケーションに「ログインページにソーシャルログインボタンを表示しない」といったオプションを設け、これが有効になっているOAuthアプリケーションからログインページに飛んだときはソーシャルログインボタンを表示しないことで、Sign in with Apple の追加が不要になるのではと考えています。
小手先感あるのでこれだとまだリジェクトされるかもですが、うまくいけばそれで良し、うまくいかなかったらTwitterやFacebookでログインする機能を廃止するか、大人しく Sign in with Apple を追加しようかと思っています。。

うちはこうしてるよみたいな体験談やその他ご意見などありましたら、コメントいただけると幸いです。

@AnzNetJp
anz
2020-08-09 20:59

iOSアプリ開発という視点から気になったことをコメントします。

パスワードが不要なメール認証

登録してあるメアドにログイン用のURLを送ってそれを踏むことでログインできるフローだとおもいますが、ID/PASSを廃止してこの機能のみにするとiOSアプリの審査に出せないかな?と思いました。

というのも、Appleのレビュアーが審査できるようにこちらが利用するサービスのテストアカウント等を準備する必要があるのですが、メールでログインのみだと、レビュアーが審査しようとした時に当然こちらが用意したメアドの方に送られてくるのでレビュアーが確認する術がないかなと(流石にGmailなんかのログインを共有するわけにはいかないので)

設定による表示状態切替

最も工数をかけずに審査を通すには...と考えた時に、SNSのやつを非表示にするというのは僕も思ったことなので、この方針自体はアリなのかなと考えています。
(サービス独自のログインしかない場合は、Sign in with Appleの対応がいらないことは確認ができているので)

ただその場合でも、審査を通すときだけその設定を有効にして審査通過後に解除するということができないように、
アプリ新規登録時だけ設定できて以降は編集不可とか、編集後はSECRETが変わるとかという仕組みが必要そうと思いました。


iOSアプリ開発なしで考えると、メールでログインはパスワードの管理をしなくてすむので好きです。(まぁ今はTwitterでやってるんですけど。。(笑))

@shimbaco
Shimba, Koji管理者
2020-08-10 02:28

アドバイスありがとうございます!とても参考になります。

> Appleのレビュアーが審査できるようにこちらが利用するサービスのテストアカウント等を準備する必要がある

あー、そういえばそんなでしたね…完全に忘れてました…。
パスワードでの認証は既存利用者のための救済措置として残しておくつもりでした。昔のAnnictはメールアドレスの確認をスキップしてログインできるようになっていて、利用者が入力したメールアドレスが間違っている可能性があるので…。
アプリのレビューの際はそちらを利用頂くと良さそうです。

そういえばちょっと気になったのですが、例えば Basecamp 3のiOSアプリ は、現状Googleアカウント以外でログインする方法が無いっぽいです。
こういうソーシャルログインしか提供していないアプリの場合、Appleのレビュアーが使うテストアカウントってどうやって用意してるんでしょうか?


> ただその場合でも、審査を通すときだけその設定を有効にして審査通過後に解除するということができないように、
> アプリ新規登録時だけ設定できて以降は編集不可とか、編集後はSECRETが変わるとかという仕組みが必要そうと思いました。

確かにそうですね。既存のアプリに関してはマニュアルで対応しようかな。。


> iOSアプリ開発なしで考えると、メールでログインはパスワードの管理をしなくてすむので好きです。(まぁ今はTwitterでやってるんですけど。。(笑))

TwitterでログインもTwitterのパスワードだけ管理すれば済むので便利ですよねw

@AnzNetJp
anz
2020-08-10 03:19

> アプリのレビューの際はそちらを利用頂くと良さそうです。

ということは、設定を有効にしてアプリからログインページに飛ばした時は、ID/PASSを入力するだけのログイン画面っていう感じになるんですかね。問題なさそう。
ただその場合、SNSアカウントで登録してる人はパスワード未設定でしょうから、アプリを使えなさそうですかね :thinking:
(その場合でもアプリ側で説明を書いておけば問題はなさそうか)

> こういうソーシャルログインしか提供していないアプリの場合、...

Twitterのヘルパーアプリみたいのを作っていてTwitterログインが必須なのですが、このアプリだとデバッグ用のTwitterアカウントのID/PASSを共有しちゃってますね。審査終わればなんとなくパスワードを変更するみたいな運用しています。Basecamp 3も同じことしているかはわからないですが。
なんとなくGoogleアカウントを特別視してて考えから外れてたけれど、メールでログインもそんな感じでやれば行けるのか...(笑)

ref. https://www.sglabs.jp/app-store-reject-4/

メールでログインだけでも、テスト用のGoogleアカウントを作成してそのログイン情報共有して、レビューの補足情報でメールが送られるからそれでログインしてくれっていうフローを説明しとけばいけそうな感覚に変わりました :bow:
ただ、参考サイトにある「信頼できる端末の設定」をするためにも(あるいは他にもセキュリティ周りでなんかありそうなので)1回以上のリジェクトは覚悟で(笑)
(レビュアー側でアカウント作成までやってくれれば楽なんだけどな...)

@shimbaco
Shimba, Koji管理者
2020-08-10 04:17

> ということは、設定を有効にしてアプリからログインページに飛ばした時は、ID/PASSを入力するだけのログイン画面っていう感じになるんですかね。

いえ、↓の画像のようにメールでログインを上部に出しつつ、その下に「パスワードでログイン」といったリンクを表示して、そちらでメールアドレスとパスワードを入力してログインしてもらうイメージでした。

ログイン | Annict 2020-08-10 12-54-51

SNSアカウントで登録していてパスワードを設定しておらず、かつメールアドレスが間違っている人はどうしようかなという感じですが。。問い合わせいただいてマニュアル対応という感じになるのかな。

> デバッグ用のTwitterアカウントのID/PASSを共有しちゃってますね

なるほど、ソーシャルログインで使うサービスのアカウントもこっちで用意する必要があるんですね。
参考サイトのGoogleのやつ悲しいですね…w Googleは何も悪くない…。
メールでログインも、Gmail見てって言えばいけそうな感じしますね。

とても参考になりました。ありがとうございます!

@AnzNetJp
anz
2020-08-10 05:35

> メールでログインも、Gmail見てって言えばいけそうな感じしますね。

行けそうな感じします!
でも↑の画像のようにアプリから飛ばしたログインページに ID/PASS ログインのリンクもあると嬉しいですかね。新にGoogleアカウント用意しなくて済みますし、レビュアーとのやり取りも発生しなくて済みなそうなので。
割と手軽にできるのであれば検討してほしいです mm

@shimbaco
Shimba, Koji管理者
2020-08-10 10:20

そうですね。どのみちリンクは表示しないとなので、レビュー依頼するときはそちらからお願いすると良さそうです!