超メモ帳(Web式)@復活

統合失調症を患い、はてなからも逃亡。現在、復活のため準備中。


SPONSORED LINK

Facebook、Twitterのアカウントでログインできる処理を作る。


最近のWebアプリではよく付いていますよね、TwitterとかFacebookのアカウントでログイン出来る処理。必要になったので、ちょっと実装方法などをメモしておく。

最初っからスクラッチで作りこもうかと思ったけど、面倒かつ車輪の再発明なのでそんなことはしない。Packagistを探したらあった。

今回使うのはhybridauthというライブラリです。Twitter,Facebookの他にもGoogleとかGithubのアカウントを使ってログインできるみたいです。


HybridAuth, Open Source Social Sign On PHP Library


Composerのインストール方法を記述しようかと思ったら、テストで使おうとしたさくらインターネットのスタンダートプランはPHP5.2 orz 5.2系も陳腐化している辺りに年月の速さの恐ろしさを感じます。そもそもスタンダートプランだとcurlがまともに機能しないっぽ。。さっさとVPSプランに変えろということか。。


さて、Composerでhybridauthをインストール前提で書いておく。面倒だからソースを書いておくだけに留める。ドキュメントも全部熟読しているとは言いがたいし、簡単に使えるんだなというフレーバーだけでも理解してもらえると幸いです。

<?php
require_once dirname(__FILE__) .'/../composer/vendor/autoload.php';

class SocialLoginWrapper {

    public $hybridauth;
    public $auth_library_path = '';

    public function __construct() {

        $this->auth_library_path = 'http://'. $_SERVER['SERVER_NAME'] .'/socialLoginTest/composer/vendor/hybridauth/hybridauth/hybridauth/';

        $paramArray = $this->getSocialLoginParamArray();
        $this->hybridauth = new Hybrid_Auth($paramArray);
    }

    public function getSocialLoginParamArray() {

        $paramArray = array(
            "base_url" => $this->auth_library_path,

            "providers" => array ( //'key' is your twitter application consumer key
                "Twitter" => array (
                    "enabled" => true,
                    "keys" => array ( "key" => "twitter_auth_id", "secret" => "twitter_auth_key" )
                ),
                "Facebook" => array ( // 'id' is your facebook application id
                    "enabled" => true,
                    "keys" => array ( "id" => "facebook_auth_id", "secret" => "facebook_auth_key" ),
                    "scope" => "email, user_about_me, user_birthday, user_hometown" // optional
                )
            )
        );

        return $paramArray;
    }

    public function getSocialLoginObj() {

        return $this->hybridauth;
    }
}

$socialObj = new SocialLoginWrapper();
$loginObj = $socialObj->getSocialLoginObj();

// twitterの場合
$twitter = $loginObj->authenticate('Twitter'); // ログイン処理
$twitter_user_profile = $twitter->getUserProfile();
$account_settings = $twitter->api()->get('account/settings.json');
print_r($twitter);
print_r($twitter_user_profile);
print_r($account_settings);
$twitter->logout(); // ログアウト


// facebookの場合
$facebook = $loginObj->authenticate('Facebook'); // ログイン処理
print_r($facebook);
$facebook->logout(); // ログアウト


twitter_auth_id、twitter_auth_key、facebook_auth_id、facebook_auth_keyは適時置き換えてください。下記で取得できます。twitterの場合はパーミッションはread,writeです。


twitterディベロッパーページ
Twitter Application Management


facebookディベロッパーページ
Facebook開発者 - 開発者向けFacebook


いやー、疲れてますね。流石5月の力。ゴールデンウィークバイですわ。シンドいですが頑張ろう。


Twitter API ポケットリファレンス (POCKET REFERENCE)

Twitter API ポケットリファレンス (POCKET REFERENCE)

10日でおぼえるFacebookアプリ開発入門教室 (10日でおぼえるシリーズ)

10日でおぼえるFacebookアプリ開発入門教室 (10日でおぼえるシリーズ)



人気ブログランキングへ

プライバシーポリシー免責事項