97 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 | 
						|
 | 
						|
class Linkedin  
 | 
						|
{
 | 
						|
    protected $app_id;
 | 
						|
    protected $app_secret;
 | 
						|
    protected $callback;
 | 
						|
    protected $csrf;
 | 
						|
    protected $scopes;
 | 
						|
    protected $ssl;
 | 
						|
    protected $accessToken;
 | 
						|
    public function __construct()
 | 
						|
    {
 | 
						|
        $this->app_id = $_ENV['LINKEDIN_CLIENT_ID']; //'86wmrdhy302lrb';
 | 
						|
        $this->app_secret = $_ENV['LINKEDIN_CLIENT_SECRET']; //'sRCaYAHkiM1oY9m3';
 | 
						|
        $this->scopes =  "r_liteprofile r_emailaddress";
 | 
						|
        $this->csrf = random_int(111111,99999999999);
 | 
						|
        // $this->callback = "http://52.229.31.187/app";
 | 
						|
        $this->callback = $_ENV['LINKEDIN_REDIRECT_URL']; //"http://dev.wecuro.com";
 | 
						|
        $this->ssl = false;
 | 
						|
 | 
						|
        // $params->app_id = '86i3o03b7tzgsx';
 | 
						|
        // $params->app_secret = 'iAz5qVQiN56cu79f';
 | 
						|
        // $params->scopes =  "r_liteprofile r_basicprofile r_emailaddress";
 | 
						|
        // $params->csrf = random_int(111111,99999999999);
 | 
						|
        // $params->callback = "http://localhost/hospital-management/admin/login";
 | 
						|
        // $params->ssl = false;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getAuthUrl($callback="")
 | 
						|
    {
 | 
						|
        if($callback != "")
 | 
						|
        {
 | 
						|
            $this->callback = $callback;
 | 
						|
        }
 | 
						|
        $_SESSION['linkedincsrf']  = $this->csrf;
 | 
						|
        return "https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=". $this->app_id . "&redirect_uri=".$this->callback ."&state=". $this->csrf."&scope=". $this->scopes ;
 | 
						|
    }
 | 
						|
    public function linkdinLogoutUrl($accessToken="")
 | 
						|
    {
 | 
						|
        if($accessToken != "")
 | 
						|
        {
 | 
						|
            return "https://www.linkedin.com/oauth/v2/revoke?client_id=". $this->app_id . "&client_secret=".$this->app_secret ."&token=". $accessToken ;
 | 
						|
        }else{
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    public function getAccessToken($code)
 | 
						|
    {
 | 
						|
        $url = "https://www.linkedin.com/oauth/v2/accessToken";
 | 
						|
        $params = [
 | 
						|
            'client_id' => $this->app_id,
 | 
						|
            'client_secret' => $this->app_secret,
 | 
						|
            'redirect_uri' => $this->callback,
 | 
						|
            'code' => $code,
 | 
						|
            'grant_type' => 'authorization_code',
 | 
						|
        ];
 | 
						|
        $response = $this->curl($url,http_build_query($params), "application/x-www-form-urlencoded");
 | 
						|
        $accessToken = json_decode($response)->access_token;
 | 
						|
        $this->accessToken = $accessToken;
 | 
						|
        return $accessToken;
 | 
						|
    }
 | 
						|
    public function getPerson()
 | 
						|
    {
 | 
						|
        $url = "https://api.linkedin.com/v2/me?projection=(id,firstName,localizedFirstName,lastName,localizedLastName,maidenName,email,localizedMaidenName,headline,localizedHeadline,websites,vanityName,profilePicture(displayImage~:playableStreams))&oauth2_access_token=" . $this->accessToken;
 | 
						|
        $params = [];
 | 
						|
        $response = $this->curl($url,http_build_query($params), "application/x-www-form-urlencoded", false);
 | 
						|
        $person = json_decode($response);
 | 
						|
        return $person;
 | 
						|
    }
 | 
						|
    public function getEmail()
 | 
						|
    {
 | 
						|
        $url = "https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))&oauth2_access_token=" . $this->accessToken;
 | 
						|
        $params = [];
 | 
						|
        $response = $this->curl($url,http_build_query($params), "application/x-www-form-urlencoded", false);
 | 
						|
        $emailObject = json_decode($response);
 | 
						|
        return $emailObject;
 | 
						|
    }
 | 
						|
    protected function curl($url, $parameters, $content_type, $post = true)
 | 
						|
    {
 | 
						|
        $ch = curl_init();
 | 
						|
        curl_setopt($ch, CURLOPT_URL, $url);
 | 
						|
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->ssl);
 | 
						|
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 | 
						|
        if ($post) {
 | 
						|
            curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
 | 
						|
        }
 | 
						|
        curl_setopt($ch, CURLOPT_POST, $post);
 | 
						|
        $headers = [];
 | 
						|
        $headers[] = "Content-Type: {$content_type}";
 | 
						|
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 | 
						|
        $result = curl_exec($ch);
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
}
 |