Advertisement
Guest User

Codeigniter Twitter Login

a guest
Nov 17th, 2020
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 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 twitter config
  8. $this->load->config('twitter');
  9.  
  10. //Load user model
  11. $this->load->model('user');
  12. }
  13.  
  14. public function index(){
  15. $userData = array();
  16.  
  17. //Include the twitter oauth php libraries
  18. include_once APPPATH."libraries/twitter-oauth-client/twitteroauth.php";
  19.  
  20. //Twitter API Configuration
  21. $consumerKey = $this->config->item('twitter_api_key');
  22. $consumerSecret = $this->config->item('twitter_api_secret');
  23. //$consumerKey = 'Insert_Twitter_API_Key';
  24. //$consumerSecret = 'Insert_Twitter_API_Secret';
  25. $oauthCallback = base_url().'user_authentication/';
  26.  
  27. //Get existing token and token secret from session
  28. $sessToken = $this->session->userdata('token');
  29. $sessTokenSecret = $this->session->userdata('token_secret');
  30.  
  31. //Get status and user info from session
  32. $sessStatus = $this->session->userdata('status');
  33. $sessUserData = $this->session->userdata('userData');
  34.  
  35. if(isset($sessStatus) && $sessStatus == 'verified'){
  36. //Connect and get latest tweets
  37. $connection = new TwitterOAuth($consumerKey, $consumerSecret, $sessUserData['accessToken']['oauth_token'], $sessUserData['accessToken']['oauth_token_secret']);
  38. $data['tweets'] = $connection->get('statuses/user_timeline', array('screen_name' => $sessUserData['username'], 'count' => 5));
  39.  
  40. //User info from session
  41. $userData = $sessUserData;
  42. }elseif(isset($_REQUEST['oauth_token']) && $sessToken == $_REQUEST['oauth_token']){
  43. //Successful response returns oauth_token, oauth_token_secret, user_id, and screen_name
  44. $connection = new TwitterOAuth($consumerKey, $consumerSecret, $sessToken, $sessTokenSecret);
  45. $accessToken = $connection->getAccessToken($_REQUEST['oauth_verifier']);
  46. if($connection->http_code == '200'){
  47. //Get user profile info
  48. $userInfo = $connection->get('account/verify_credentials');
  49.  
  50. //Preparing data for database insertion
  51. $name = explode(" ",$userInfo->name);
  52. $first_name = isset($name[0])?$name[0]:'';
  53. $last_name = isset($name[1])?$name[1]:'';
  54. $userData = array(
  55. 'oauth_provider' => 'twitter',
  56. 'oauth_uid' => $userInfo->id,
  57. 'username' => $userInfo->screen_name,
  58. 'first_name' => $first_name,
  59. 'last_name' => $last_name,
  60. 'locale' => $userInfo->lang,
  61. 'profile_url' => 'https://twitter.com/'.$userInfo->screen_name,
  62. 'picture_url' => $userInfo->profile_image_url
  63. );
  64.  
  65. //Insert or update user data
  66. $userID = $this->user->checkUser($userData);
  67.  
  68. //Store status and user profile info into session
  69. $userData['accessToken'] = $accessToken;
  70. $this->session->set_userdata('status','verified');
  71. $this->session->set_userdata('userData',$userData);
  72.  
  73. //Get latest tweets
  74. $data['tweets'] = $connection->get('statuses/user_timeline', array('screen_name' => $userInfo->screen_name, 'count' => 5));
  75. }else{
  76. $data['error_msg'] = 'Some problem occurred, please try again later!';
  77. }
  78. }else{
  79. //unset token and token secret from session
  80. $this->session->unset_userdata('token');
  81. $this->session->unset_userdata('token_secret');
  82.  
  83. //Fresh authentication
  84. $connection = new TwitterOAuth($consumerKey, $consumerSecret);
  85. $requestToken = $connection->getRequestToken($oauthCallback);
  86.  
  87. //Received token info from twitter
  88. $this->session->set_userdata('token',$requestToken['oauth_token']);
  89. $this->session->set_userdata('token_secret',$requestToken['oauth_token_secret']);
  90.  
  91. //Any value other than 200 is failure, so continue only if http code is 200
  92. if($connection->http_code == '200'){
  93. //Get twitter oauth url
  94. $twitterUrl = $connection->getAuthorizeURL($requestToken['oauth_token']);
  95. $data['oauthURL'] = $twitterUrl;
  96. }else{
  97. $data['oauthURL'] = base_url().'user_authentication';
  98. $data['error_msg'] = 'Error connecting to twitter! try again later!';
  99. }
  100. }
  101.  
  102. $data['userData'] = $userData;
  103. $this->load->view('user_authentication/index',$data);
  104. }
  105.  
  106. public function logout() {
  107. $this->session->unset_userdata('token');
  108. $this->session->unset_userdata('token_secret');
  109. $this->session->unset_userdata('status');
  110. $this->session->unset_userdata('userData');
  111. $this->session->sess_destroy();
  112. redirect('/user_authentication');
  113. }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement