アプリ開発でのSNS認証のクライアント、サーバーの連携
SNS連携とは
このQuiitaでもよく見られる,ログイン時の「Twitterで登録」などのものです。
今回は
- firebaseなどのmBaasを使わない
- WebViewを使わない
- モバイルアプリ
という条件での
クライアント、サーバーの連携方法をご説明します。(OAuth認証)
クライアント
基本的にクライアント側で認可サーバと連携し、ユーザのアクセス許可をもらいます。
クライアントのフレームワークに準拠しているSNS各種のSDKによって、最近は簡単に実装できています。
認可サーバーから、ユーザー固有のアクセストークンを取得します。
これをサーバーに送ります。
例 SwiftのTwitterSDKを用いた認可サーバーとの連携
TWTRTwitter.sharedInstance().logIn(completion: { (session, error) in
if (session != nil) {
print("signed in as \(session.userName)");
} else {
print("error: \(error.localizedDescription)");
}
})
サーバー
クライアントでアクセストークンを取得したからといってそのままアクセストークンをDBに保存してはいけません。なぜなら最近のSNSのアクセストークンは有効期限や使用回数制限などの使用制限が設けられているからです。これにより、複数回の同一文字列のアクセストークンの使用が不可能になっています。
したがって次回ログイン時で特有のUserかを判別するために、アクセストークンではない、別のdataを判別dataにする必要があります。
例えば、メールアドレスです。アクセストークンを使ってSNS提供サーバーから様々なデータを取得することができますが、その一つにメールアドレスもあります。
メールアドレスの利点は、万が一SNSの認可サーバーが使えなくなったりした時に、代用としてメールアドレスログインとして、SNSから取得したメールアドレスを使ったりすることができることです。(ただし、どのSNS提供サーバーでもメールアドレスの取得が可能である訳ではないかつ、SNSで登録したメールアドレスをユーザーが紛失している可能性もああるので、ベストでマストな要件ではないです。)
例 RubyOnRailsでのaccess_tokenを用いたemailの取得
require 'koara'
module FacebookService
class << self
def fetch_mail(access_token)
Koala::Facebook::API.new(access_token).get_object('me')['email']
end
end
end
Author And Source
この問題について(アプリ開発でのSNS認証のクライアント、サーバーの連携), 我々は、より多くの情報をここで見つけました https://qiita.com/ryuseikurata/items/3d31e12b1f0c2a59858b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .