Code Monkey home page Code Monkey logo

socialite's Introduction

Socialite

A cool module to handle oauth2 authentication.

Currently support:

  • Facebook
  • Google
  • Linkedin
  • Github

Installation:

You can install with commandbox

install socialite

Otherwise download from forgebox

http://www.coldbox.org/forgebox/view/Socialite

Configuration:

You need to put your clientId, clientSecret and redirect url in config file. You can insert your data in ColdBox.cfc:

		// Custom Settings
	    moduleSettings = {
			socialite = {
				facebook = {
					client_id = "XXXXXXXXXXXXX",
					client_secret = "XXXXXXXXXXXXX",
					redirect_url = "http://YOUR-URL/provider/response/facebook"					
				},
				google = {
					client_id = "XXXXXXXXXXXXX",
					client_secret = "XXXXXXXXXXXXX",
					redirect_url = "http://YOUR-URL/provider/response/google"					
				},
				github = {
					client_id = "XXXXXXXXXXXXX",
					client_secret = "XXXXXXXXXXXXX",
					redirect_url = "http://YOUR-URL/provider/response/github"					
				},
				linkedin = {
					client_id = "XXXXXXXXXXXXX",
					client_secret = "XXXXXXXXXXXXX",
					redirect_url = "http://YOUR-URL/provider/response/linkedin"					
				}
			}
		};

Usage:

First create routes:

		route(pattern="/provider/response/:provider", target="socialite.response");
		route(pattern="/provider/:provider", target="socialite.auth");

In your view put the code for login button:

<a href="#event.buildLink( 'provider/facebook' )#">Facebook</a>

In your handler:

socialite.init().with('facebook').redirect()

This will prompt you to authentication page. Then simply:

socialite.with('facebook').user(rc.code)

A simple example:


component {

	property name="socialite" inject="SocialiteManager@socialite";
    property name="credentials" inject="coldbox:modulesettings:socialite";
	property name="user" inject="BaseUser@socialite";

	function index(event,rc,prc){
		event.setView("socialite/index");
	}

	function auth(event,rc,prc){
		var social = socialite.init( credentials ).with( rc.provider );
		social.redirect();
	}

	function response(event,rc,prc){
		prc.user = socialite.init( credentials ).with(rc.provider).user(rc.code);
		event.setView("socialite/index");
	}

}

And you will get user data.

socialite's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

socialite's Issues

How do I structure the database to use this plugin?

I am a new user for coldbox. How do I structure my database to handle both local user accounts (old school register with UN/PW) and social logins? It would be great if you could add this kind of info to your readme. And thank you for providing the plugin!

LinkedIn Error

Setup as per instructions, coldbox settings added correctly. Throws error on redirect page with linkedIn response as:

You need to pass the "scope" parameter

Getting Started

Could you please add little more detail on how to get socialite setup?

For example where does the "socialite.init().with('facebook').redirect()" go?

Failed to get access_token from Linkedin

Recently, the module failed to get access_token from Linkedin. It threw an error, {"error_description":"missing required parameters, includes an invalid parameter value, parameter more than once. : grant_type","error":"invalid_request"}. It turns out, Linkedin's parameters name are case sensitive.

To fix it, change line 54 in Linkedin.cfc
from
params.grant_type = 'authorization_code';
to
params["grant_type"] = 'authorization_code';

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.