あるサイト制作でFacebookを使った会員登録やログインを実装してました。OAuth2という認証方式が使われていたので、仕組みを 「SNS連携やってみた!OAuth2の処理の流れまとめてみる」にまとめました。PHPはSDKが準備されているのですが、今回はOAuth2の仕組みの勉強がてらSDKを使わずにPHPでアクセストークを取得する処理をまとめてみます。
完成サンプル:GitHub
事前準備
例としてFacebookを使った会員ログインを考えます。少しでも手間を楽にしたら会員登録してくれる人も多くなるはずと、最近ではSNSを使ったログインが多くなりました。
クライアント(サイト制作者)はFaceBook(サービスプロバイダー)を使ったログインをするため、Facebookに使わせてくださいと登録します。そこで使う権限などを登録してAPIを利用するためのIDなどを発行してもらいます。なのでまずは、Facebookとの手続きが必要になります。
Facebookとの手続きは、「Facebook Developers」で行います。
サイトにアクセスして「My Apps」をクリックしログインします。
登録されているアプリ一覧が表示されます。今回は新規アプリ(※ウェブサイトも含む)で作成するので「Add a New App」ボタンをクリックします。
プラットフォームは「ウェブサイト」を選択します。
新規アプリの入力欄が表示されるので入力して、「Create New Facebook App ID」ボタンをクリックします。今回は、アプリ名に「OAuth2 Test」としました。
テストアプリかどうか聞いてきます。検証用なのでテストアプリかといえばそうなんですが、ここの意味は既にあるアプリのテスト用かということなので、今回は別アプリとして新規になります。なので「Create OAuth2 Test App?」は「いいえ」にしてカテゴリを選びます。「はい」にすると既に登録しているアプリを選択するように入力項目が変更されます。「Create App ID」をクリックします。
「Quick Start for Website」の画面が表示されますが、今回はSDKを使わないんでスキップしました。
やっと、「App ID」と「App Secret」を発行してもらいました。APIではこれらの値を使います。
アクセストークンと取得するためにはもう少し設定が必要になります。
サイドメニューの「settings」をクリックします。「+Add Platform」ボタンをクリックします。
今回はウェブサイトなので「Website」をクリックします。
アプリを使うサイトのURLを入力します。アクセストークンを取得する処理の流れに、Facebookサイトからアプリを使うサイトにリダイレクトさせる処理があるのですが、リダイレクト先として設定したURLのドメインとここで登録したドメインが一致しないとエラーになります。今回の例ではFacebookのログインボタンを設置(※アプリを使う)するサイトのドメインのURLを入力します。「localhost」やローカルIPでも問題なく動作しました。入力したら「Save Changes」ボタンをクリックします。
以上で最低限の設定は終わりです。
次のページでは「SNSログインボタン(リンク)の設置」をみていきます。
[facebook API 関連記事]