Skip to content

Plugin for Nette. Login with social networks (Facebook, Google, Twitter )

Notifications You must be signed in to change notification settings

pitrrs/social-login

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

social-login

Scrutinizer Code Quality Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Nette addon for logint with social networks

Installation

  1. Add the bundle to your dependencies:

    // composer.json
    {
       // ...
       "require": {
           // ...
    	   "facebook/php-sdk-v4" : "4.0.*",
    	   "google/apiclient": "~1.0",
    	   "kertz/twitteroauth": "dev-master",
    	   "venca-x/social-login": "@dev"
       }
    }
    
  2. Use Composer to download and install the bundle:

    composer update
    

Configuration

config.neon

parameters:
	facebook:
		appId: '123456789'
		appSecret: '987654321'
		callbackURL: 'http://www.muj-web.cz/homepage/facebook-login'
	google:
		clientId: '123456789'
		clientSecret: '987654321'
		callbackURL: 'http://www.muj-web.cz/homepage/google-login'
	twitter:
		consumerKey: '123456789'
		consumerSecret: '987654321'
		callbackURL: 'http://www.muj-web.cz/homepage/twitter-login'

nette:
	session:
		autoStart: true  # default is smart	

services:
    ...
    - Vencax\SocialLogin({ facebook: %facebook%, google: %google%, twitter: %twitter% }, 'domain-social-login' )

Where 'domain-social-login' replace to your unique identifier (it's cookie name for last used services for login)

BasePresenter.php

    use Vencax;

    /** @var Vencax\SocialLogin */
    private $socialLogin;

    public function injectSocialLogin( Vencax\SocialLogin $socialLogin )
    {
        $this->socialLogin = $socialLogin;
		//set scope
        $this->socialLogin->facebook->setScope( 'email' );
        $this->socialLogin->google->setScope( array( "https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/userinfo.email" ) );		
    }


    //$facebookLoginUrl = $this->socialLogin->facebook->getLoginUrl();
    //$googleLoginUrl = $this->socialLogin->google->getLoginUrl();
    //$twitterLoginUrl = $this->socialLogin->twitter->getLoginUrl();

    //dump( $this->socialLogin->getSocialLoginCookie() );

    //$this->template->facebookLastLogin = $this->socialLogin->facebook->isThisServiceLastLogin();
    //$this->template->googleLastLogin = $this->socialLogin->google->isThisServiceLastLogin();
    //$this->template->twitterLastLogin = $this->socialLogin->twitter->isThisServiceLastLogin();
    ...
<a rel="nofollow" href="{$facebookLoginUrl}" {if $facebookLastLogin}class="last-login"{/if}><i class="fa fa-facebook-square fa-lg"></i></a>
<a rel="nofollow" href="{$googleLoginUrl}" {if $googleLastLogin}class="last-login"{/if}><i class="fa fa-google-plus-square fa-lg"></i></a><br/>
<a rel="nofollow" href="{plink User:twitterLogin}" {if $twitterLastLogin}class="last-login"{/if}><i class="fa fa-twitter-square fa-lg"></i></a><br/>
<a rel="nofollow" href="{plink User:registration}"><i class="fa fa-plus-square fa-lg"></i> Zaregistrovat</a>
    public function actionTwitterLogin()
    {
        $this->redirectUrl( $this->socialLogin->twitter->getLoginUrl( $this->presenter->link( '//Homepage:googleLogin' ) ) );
    }

HomepagePresenter.php

    public function actionFacebookLogin()
    {
        try
        {
            $me = $this->socialLogin->facebook->getMe();
            dump( $me );
            exit();
        }
        catch( Exception $e )
        {
            $this->flashMessage( $e->getMessage(), "alert-danger" );
            $this->redirect("Homepage:default");
        }
    }

    public function actionGoogleLogin( $code )
    {
        try
        {
            $me = $this->socialLogin->google->getMe( $code );
            dump( $me );
            exit();
        }
        catch( Exception $e )
        {
            $this->flashMessage( $e->getMessage(), "alert-danger" );
            $this->redirect("Homepage:default");
        }
    }
    ...

Registration

Facebook

Facebook Developers - create new website app

Google

API Console - Google Code - create new project add Google+ API: APIs & auth -> APIs -> Google+ API set ON credentials: APIs & auth -> Credentials -> Crate new Client ID -> Web application

Twitter

Register a new app at dev.twitter.com/apps/

About

Plugin for Nette. Login with social networks (Facebook, Google, Twitter )

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%