TokyoFacebookTwitterHatenaPocketID/パスワードの代わりにFacebookやGoogle、Twitterなどのアカウントでログインできるソーシャルログイン機能。いろんなSNSに対応するのはそれなりに面倒ですが、Oauth.ioを使えば手軽に実装できそうです。SNSのアカウントを使ってワンクリックでWebサイトにログインできる、ソーシャルログインを便利に使っているユーザーが増えています。この記事で紹介するOAuth.ioはFacebook、Twitter、Google+など120を超えるSNSによるログインに対応したマルチプラットホームのSDKです。使い方は難しくはありませんが、使う要件を4ステップで説明します。次のものを用意してください。FacebookとGoogle(もしくはサポートされているほかのSNS)に登録されているアプリケーションの開発者アカウントoauth.ioのアカウント(30日無料トライアルあり)Facebookアプリケーションを開発するにはFacebookアプリのドキュメントを参照してください。Googleの場合はこちらです。OAuth.ioのAPI設定OAuth.ioの設定とセットアップは、SNSのアプリケーションをダッシュボードに登録します。SecretをSNSのアプリケーションページからコピーするだけです。GoogleとFacebookでの方法は次のGIFアニメーションを参照してください。ほかのSNSでもほぼ同じです。ステップ4:コーディングSNSを使ったログインロジックをコーディングします。SDKの使い方が分かるサンプルアプリケーションをOauth.ioが公開しています。サンプルアプリケーションのプロジェクトのディレクトリ構造は次のようになっています。|-Demo-OAuth-IO/|--app/|--public/|--src/|--vendor/|--composer.json|--composer.locksrcとvendorディレクトリはプロジェクトと同時に作成され、appとpublicディレクトリは途中で作成されます。例に挙げるアプリケーションはごく簡単なサンプルであり、実際のアプリ開発では多くの場合フレームワークが使われることに注意してください。SDKを読み込んで新しいプロジェクトを作成します。Demo-OAuth-IO続いてappディレクトリと関連ファイルを作成します。|-app/|--config.inc.php|--OAuthIO.phpこのディレクトリにはOAuthIOクラスが入っており、OAuthIOクラスはSDKを簡単に使うためのFacadeです。ソースコードを示します。}}OAuthIOクラスは必要な2つのファイルを読み込みます。keyの定義が書かれたconfig.inc.phpファイルです。Keysから取得できます。このクラスで定義している関数は、コードを読めば理解できます。auth()が認証プロセス、getClient()がclientの作成を担っています。APIにリクエストを出すために使っている。認証プロセスで取得したcredentialから簡単に作成でき、credentialにはRequestObjectインスタンスのgetCredentials()メソッドでアクセスする。]);appディレクトリが終わったら、次にpublicディレクトリを作成します。|-public/|--tmpl/|----footer.php|----header.php|--index.php|--login.php予想した通りpublicディレクトリにはユーザーがブラウザーからアクセスして閲覧できるファイルが入ります。このファイルはSNSの認証プロセスの大部分を担います。die($e->getMessage());}}index.php:ユーザーが認証済みか確認し、OAuthIOからgetClient()メソッドを使ってRequestObjectインスタンスの取得を試みる。}メッセージを表示する部分です。}}publicディレクトリには別のディレクトリtmplが入っており、アプリケーションのメインテンプレートの静的なheaderとfooterが入っています。このファイルにロジックは含まれていないため、記事ではソースコードは取り上げませんが、安全にpublicフォルダーに取り込めます。現時点でテストすると次のように表示されます。最後にこの短い記事で、OAuth.ioを使ってSNSログイン機能を持つページを実装する方法を説明しました。linkの人気が高まっています。これから開発するアプリにSNSログイン機能を盛り込むなら、記事で説明したプロセスを使って無用のトラブルを回避してください。SNSへのAPI呼び出しについてもっと知りたければドキュメントを参照してください。記事で作成したアプリのソースコードはGithubで入手できます。Anchetaが査読を担当しています。最高のコンテンツに仕上げるために尽力してくれたSitePointの査読担当者のみなさんに感謝します。Allamaniコンピューターサイエンスの修士号を持つフリーランスのWeb開発者です。PHPやJavaScript、J2EEなどさまざまなWebテクノロジーの経験があり、いつでも新しいものを学ぼうとしています。