Advertisement
Guest User

Codeigniter Linkedin Login

a guest
Nov 17th, 2020
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. <?php defined('BASEPATH') OR exit('No direct script access allowed');
  2. class User_Authentication extends CI_Controller
  3. {
  4. function __construct() {
  5. parent::__construct();
  6.  
  7. // Load linkedin config
  8. $this->load->config('linkedin');
  9.  
  10. //Load user model
  11. $this->load->model('user');
  12. }
  13.  
  14. public function index(){
  15. $userData = array();
  16.  
  17. //Include the linkedin api php libraries
  18. include_once APPPATH."libraries/linkedin-oauth-client/http.php";
  19. include_once APPPATH."libraries/linkedin-oauth-client/oauth_client.php";
  20.  
  21. //Get status and user info from session
  22. $oauthStatus = $this->session->userdata('oauth_status');
  23. $sessUserData = $this->session->userdata('userData');
  24.  
  25. if(isset($oauthStatus) && $oauthStatus == 'verified'){
  26. //User info from session
  27. $userData = $sessUserData;
  28. }elseif((isset($_REQUEST["oauth_init"]) && $_REQUEST["oauth_init"] == 1) || (isset($_REQUEST['oauth_token']) && isset($_REQUEST['oauth_verifier']))){
  29. $client = new oauth_client_class;
  30. $client->client_id = $this->config->item('linkedin_api_key');
  31. $client->client_secret = $this->config->item('linkedin_api_secret');
  32. $client->redirect_uri = base_url().$this->config->item('linkedin_redirect_url');
  33. $client->scope = $this->config->item('linkedin_scope');
  34. $client->debug = false;
  35. $client->debug_http = true;
  36. $application_line = __LINE__;
  37.  
  38. //If authentication returns success
  39. if($success = $client->Initialize()){
  40. if(($success = $client->Process())){
  41. if(strlen($client->authorization_error)){
  42. $client->error = $client->authorization_error;
  43. $success = false;
  44. }elseif(strlen($client->access_token)){
  45. $success = $client->CallAPI('http://api.linkedin.com/v1/people/~:(id,email-address,first-name,last-name,location,picture-url,public-profile-url,formatted-name)',
  46. 'GET',
  47. array('format'=>'json'),
  48. array('FailOnAccessError'=>true), $userInfo);
  49. }
  50. }
  51. $success = $client->Finalize($success);
  52. }
  53.  
  54. if($client->exit) exit;
  55.  
  56. if($success){
  57. //Preparing data for database insertion
  58. $first_name = !empty($userInfo->firstName)?$userInfo->firstName:'';
  59. $last_name = !empty($userInfo->lastName)?$userInfo->lastName:'';
  60. $userData = array(
  61. 'oauth_provider'=> 'linkedin',
  62. 'oauth_uid' => $userInfo->id,
  63. 'first_name' => $first_name,
  64. 'last_name' => $last_name,
  65. 'email' => $userInfo->emailAddress,
  66. 'locale' => $userInfo->location->name,
  67. 'profile_url' => $userInfo->publicProfileUrl,
  68. 'picture_url' => $userInfo->pictureUrl
  69. );
  70.  
  71. //Insert or update user data
  72. $userID = $this->user->checkUser($userData);
  73.  
  74. //Store status and user profile info into session
  75. $this->session->set_userdata('oauth_status','verified');
  76. $this->session->set_userdata('userData',$userData);
  77.  
  78. //Redirect the user back to the same page
  79. redirect('/user_authentication');
  80.  
  81. }else{
  82. $data['error_msg'] = 'Some problem occurred, please try again later!';
  83. }
  84. }elseif(isset($_REQUEST["oauth_problem"]) && $_REQUEST["oauth_problem"] <> ""){
  85. $data['error_msg'] = $_GET["oauth_problem"];
  86. }else{
  87. $data['oauthURL'] = base_url().$this->config->item('linkedin_redirect_url').'?oauth_init=1';
  88. }
  89.  
  90. $data['userData'] = $userData;
  91.  
  92. // Load login & profile view
  93. $this->load->view('user_authentication/index',$data);
  94. }
  95.  
  96. public function logout() {
  97. //Unset token and user data from session
  98. $this->session->unset_userdata('oauth_status');
  99. $this->session->unset_userdata('userData');
  100.  
  101. //Destroy entire session
  102. $this->session->sess_destroy();
  103.  
  104. // Redirect to login page
  105. redirect('/user_authentication');
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement