Location: PHPKode > scripts > Facebook login > facebook.php
/**
 * Facebook Login - Log in via Facebook
 * @author Daniel15 <dan.cx>
 */
class FacebookLogin
{
	const AUTHORIZE_URL = 'https://graph.facebook.com/oauth/authorize';
	const TOKEN_URL = 'https://graph.facebook.com/oauth/access_token';
	const PROFILE_URL = 'https://graph.facebook.com/me';
	
	private $client_id;
	private $client_secret;
	private $my_url;
	private $user_data;
	
	/**
	 * Create an instance of the FacebookLogin class
	 */
	public function __construct($client_id, $client_secret)
	{
		$this->client_id = $client_id;
		$this->client_secret = $client_secret;
		$this->my_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
	}
	
	/**
	 * Do a Facebook login - either redirects to Facebook or reads the returned result
	 */
	public function doLogin()
	{
		// Are we not returning from Facebook (ie. starting the login)?
		return !isset($_GET['code']) ? $this->startLogin() : $this->verifyLogin();
	}
	
	/**
	 * Start a login with Facebook - Redirect to their authentication URL
	 */
	private function startLogin()
	{
		$data = array(
			'client_id' => $this->client_id,
			'redirect_uri' => $this->my_url,
			'type' => 'web_server',
		);
		
		header('Location: ' . self::AUTHORIZE_URL . '?' . http_build_query($data));
		die();
	}
	
	/**
	 * Verify the token we receive from Facebook is valid, and get the user's details
	 */
	private function verifyLogin()
	{
		$data = array(
			'client_id' => $this->client_id,
			'redirect_uri' => $this->my_url,
			'client_secret' => $this->client_secret,
			'code' => $_GET['code'],
		);

		// Get an access token
		$result = @file_get_contents(self::TOKEN_URL . '?' . http_build_query($data));
		parse_str($result, $result_array);
		
		// Make sure we actually have a token
		if (empty($result_array['access_token']))
			throw new Exception('Invalid response received from Facebook. Response = "' . $result . '"');
		
		// Grab the user's data
		$this->access_token = $result_array['access_token'];
		$this->user_data = json_decode(file_get_contents(self::PROFILE_URL . '?access_token=' . $this->access_token));
		return $this->user_data;
	}
	
	/**
	 * Helper function to get the user's Facebook info
	 */
	public function getUser()
	{
		return $this->user_data;
	}
}
Return current item: Facebook login