🍎

【iOS】privaterelay.appleid.comドメインにメールを送る

2020/11/24に公開

はじめに

ReactNativeSign in with Appleを実装している時にハマった内容のTipsです。
ReactNativeに限らず、iOSアプリを開発している場合には参考になる内容かと思います。

Sign in with Appleとは

所謂 「Apple IDでサインイン」 というやつです。

これがなかなか曲者で「Googleログイン等のサードパーティのログインを実装してる」場合はSign in with Appleを実装しないとAppStoreのレビューガイドラインに違反してしまいます。

意訳ですが「iOS向けアプリでよそのログイン機構を作るならAppleIDにも対応させてくれ」ということだと思います。

以下引用

4.8 Sign in with Apple
Apps that use a third-party or social login service
(such as Facebook Login, Google Sign-In, Sign in with Twitter, Sign In with LinkedIn, Login with Amazon, or WeChat Login)
to set up or authenticate the user’s primary account with the app
must also offer Sign in with Apple as an equivalent option.
A user’s primary account is the account they establish with your app
for the purposes of identifying themselves, signing in,
and accessing your features and associated services.

何が起きたか

実装しなければレビューが通らないので止むを得ず実装しました。

幸いなことにReactNativeではreact-native-apple-authenticationというライブラリが対応していたので、手順通りに実装すればそれ程手間ではありませんでした。

ただ、サインイン時に取得するユーザ情報のなかに「メールアドレス」が含まれています。
新規のユーザ登録の場合、このメールアドレスに登録完了の旨を送信するのですが、一部のアドレスに対しては以下のようなバウンスメールが返って来てしまいます。

550 5.1.1 Relay not allowed /

このエラーが出るのが、タイトルにもあるprivaterelay.appleid.comドメインのメールアドレスです。

privaterelay.appleid.comとは?

実はAppleIDでサインインする際に、ユーザはメールアドレスの「公開/非公開」を選択することができます。
ここで「非公開」を選択した場合、Apple側が発行するのがこのドメインのメールアドレスです。

以下引用

「メールを非公開」を選択した場合
一意でランダムなメールアドレスが作成されるので、アカウントの設定やサインインプロセスに際して、App や Web サイトのデベロッパに個人用のメールアドレスが伝わることはありません。このアドレスはユーザとデベロッパを一意に特定し、<一意の英数字の文字列>@privaterelay.appleid.com という形式になります。

通常はユーザとデベロッパの特定のためだけに使われるらしく、何もしない状態だとこのメールアドレス宛にメールを送ることができません。

幸い当該のシステムでは、【ユーザの仮登録】→【送信されたメール中のURLをクリックして本登録】といったフローではなかったため、メールが届かなくても致命的な不具合とはなりませんでした。
※というかSing in with AppleでそのフローだとAppStoreレビューに通らないと思います。

対応方法

対応は簡単でした。

  • Apple Developerにログイン
  • Certificates, Identifiers & Profilesメニューを開く
  • MoreメニューからConfigureボタンを押下
  • Email Sourcesの追加を選択
  • 下記のようなモーダルが表示されるので、メール送信元アドレスの「(サブ)ドメイン」or「メールアドレス」を設定

apple

上記の手順を踏むことで解消することができました。

まとめ

今回はSign in with Appleを実装して取得したメールアドレスに対してメールを送信した際に発生したエラーと、その対処法について紹介しました。

サードパーティのログインを実装する場合、Sign in with Appleも必ず必要となってくるため遭遇しやすい内容かと思います。
知っていれば対応は簡単なので、最初にApple Developerで設定しておくことをオススメします。

Discussion