仕事ノウハウ

【アプリ開発者向け】SNS連携について

アプリ開発に携わってる方向けに「アプリのSNS連携」について概要を書きたいと思います。

アプリケーションで「SNS連携する」と言う場合、大まかに「SNS認証」と「SNS投稿」とに別れます。

【SNS認証とは】

SNS認証とはアプリケーション内で利用するアカウント作成時に、各種SNSのアカウント情報の一部の流用を目的とし、OAuthと言う仕組み(認可)を利用してそれぞれのSNSアカウントの情報を取得・認証する仕組みのこと

最近の一般的には認証->アカウント作成の手順のみの場合、Firebase AuthenticationやAWS Amplify Authenticationを導入することで、より簡易的にSNS認証を使用してアプリケーションのアカウントを作成出来ます。

情報の流用に関して

上記のFirebase/Amplifyを利用する場合認証をするSNS(プロパイダ)の種類やそのSNS上でのアカウントの設定によって取得できる情報が制限されます。


主にアカウント情報、メールアドレス、アイコンなど取得できる場合・できない場合があるので、それぞれのアカウント情報を取得できる前提でのサインアップ導線の設計はしてはいけません

またアイコンやメールアドレスを取得できたとしても、それ以降の変更は相互に連携しない(Twitter<->MyApp)のでアプリケーション側で「アカウント情報の編集」を設けることが好ましいです

iOSの審査ガイドラインに「他のSNS認証をアプリケーション内で使用する場合はSignin with Appleも導入しなくてはならない」と言う規約が存在します。この為iOSはもちろん、そのアプリケーションが提供したいそれぞれのプラットフォームでSignin with Appleの実装が必要となります。

またSignin with Apple の場合、初回認証時にアプリケーションにAppleアカウントに登録してあるメールアドレスを隠蔽し、”hogehoge(ランダムな文字列)@privaterelay.apple.com” といったメールアドレスの利用をする選択もユーザーが可能です。

※Andorid/Webなどはガイドライン上の制約はないが、iOS端末でSignin with AppleでサインアップしたユーザーがAndroidに機種変更した、Webでも利用したいなどのユースケースにより事実上全てのプラットフォームでの実装が必要となります

Firebase Authenticationで利用できるSNS認証の種類

<プロパイダ名 / 各種SDK/DevConsole側の設定 / 難易度>
・Twitter / Twitter Application(審査必要) / 高(APIKeyの審査がある)
・Facebook / Facebook for Developers / 中
・Google / Google for Sign-In/ 低
・Apple / Apple Developer / 低(Android 中)
・Yahoo/ Yahoo! Developer / 低
・Microsoft / Azure Portal / 中
・Github / Github Developer Application / 低
※LINEはカスタム認証で接続可能だが難易度がそこそこ高い。



【SNS投稿とは】

SNS投稿とはアプリケーション内でのなんらかのコンテンツを、他のアプリケーション(Instagram, Twitterなど)にリソース(文章・画像・ハッシュタグなど)を用いて共有することを一般的に示します。

このSNS投稿には「ユーザーによる操作によって他アプリで共有する」方法と「アプリケーション内のコンテンツとして自動投稿する」という種別があり、後者の場合は各種SNSのAPIを利用する必要があるので、難易度が格段に上がります。

前者の場合は以下の画像のUIがそれぞれのプラットフォームで用意されており、実装も比較的工数はかからなくてすみます。

iOS

iOSのSNS投稿画面
AndroidのSNS投稿画面



まとめ

ユーザーログインを必須とするアプリであればSNS認証を、同じSNS系のアプリであればSNS投稿を利用するケースが増えています

他のプラットフォームを利用することで、ユーザー側のアカウント作成やシェアを簡素化出来るメリットがあります。


一方で、使用するプラットフォームによっては実装がかなり大変な場合もあるので、導入を検討する際には比較もしながら慎重に行うことをおすすめします!

-仕事ノウハウ
-,