Twitter adalah salah satu jaringan sosial populer dan paling banyak digunakan. Jutaan orang di seluruh dunia terhubung dengan Twitter. Ketika sistem login Twitter diintegrasikan ke dalam aplikasi web Anda, Pasti membantu untuk membuat proses login pengguna menjadi lebih mudah. Pengguna dapat login ke website Anda dengan akun Twitter. Dan juga, Anda bisa mendapatkan rincian profil pengguna dari Twitter ketika mereka login dengan Twitter.
Dalam tutotial ini kita akan belajar bagaimana mengintegrasikan Twitter Login di CodeIgniter menggunakan LibraryTwitter OAuth dan memungkinkan pengguna untuk login dengan Twitter dalam aplikasi CodeIgniter.
Membuat Twitter Apps
Consumer Key atau Rahasia Konsumen diperlukan untuk menggunakan LibraryTwitter OAuth. Itulah mengapa Anda perlu membuat Twitter App terlebih dahulu.
Copy the Consumer Key dan Consumer Secret yang nanti akan kita gunakan dalam script.
Sebelum Anda mulai proses integrasi login Twitter, lihatlah struktur folder dan file untuk login Twitter di CodeIgniter.
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`oauth_provider` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`oauth_uid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`first_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`last_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`locale` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`picture_url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`profile_url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class User_Authentication extends CI_Controller
{
function __construct() {
parent::__construct();
//Load user model
$this->load->model('user');
}
public function index(){
$userData = array();
//Include the twitter oauth php libraries
include_once APPPATH."libraries/twitter-oauth-php-codexworld/twitteroauth.php";
//Twitter API Configuration
$consumerKey = 'Insert_Twitter_API_Key';
$consumerSecret = 'Insert_Twitter_API_Secret';
$oauthCallback = base_url().'user_authentication/';
//Get existing token and token secret from session
$sessToken = $this->session->userdata('token');
$sessTokenSecret = $this->session->userdata('token_secret');
//Get status and user info from session
$sessStatus = $this->session->userdata('status');
$sessUserData = $this->session->userdata('userData');
if(isset($sessStatus) && $sessStatus == 'verified'){
//Connect and get latest tweets
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $sessUserData['accessToken']['oauth_token'], $sessUserData['accessToken']['oauth_token_secret']);
$data['tweets'] = $connection->get('statuses/user_timeline', array('screen_name' => $sessUserData['username'], 'count' => 5));
//User info from session
$userData = $sessUserData;
}elseif(isset($_REQUEST['oauth_token']) && $sessToken == $_REQUEST['oauth_token']){
//Successful response returns oauth_token, oauth_token_secret, user_id, and screen_name
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $sessToken, $sessTokenSecret);
$accessToken = $connection->getAccessToken($_REQUEST['oauth_verifier']);
if($connection->http_code == '200'){
//Get user profile info
$userInfo = $connection->get('account/verify_credentials');
//Preparing data for database insertion
$name = explode(" ",$userInfo->name);
$first_name = isset($name[0])?$name[0]:'';
$last_name = isset($name[1])?$name[1]:'';
$userData = array(
'oauth_provider' => 'twitter',
'oauth_uid' => $userInfo->id,
'username' => $userInfo->screen_name,
'first_name' => $first_name,
'last_name' => $last_name,
'locale' => $userInfo->lang,
'profile_url' => 'https://twitter.com/'.$userInfo->screen_name,
'picture_url' => $userInfo->profile_image_url
);
//Insert or update user data
$userID = $this->user->checkUser($userData);
//Store status and user profile info into session
$userData['accessToken'] = $accessToken;
$this->session->set_userdata('status','verified');
$this->session->set_userdata('userData',$userData);
//Get latest tweets
$data['tweets'] = $connection->get('statuses/user_timeline', array('screen_name' => $userInfo->screen_name, 'count' => 5));
}else{
$data['error_msg'] = 'Some problem occurred, please try again later!';
}
}else{
//unset token and token secret from session
$this->session->unset_userdata('token');
$this->session->unset_userdata('token_secret');
//Fresh authentication
$connection = new TwitterOAuth($consumerKey, $consumerSecret);
$requestToken = $connection->getRequestToken($oauthCallback);
//Received token info from twitter
$this->session->set_userdata('token',$requestToken['oauth_token']);
$this->session->set_userdata('token_secret',$requestToken['oauth_token_secret']);
//Any value other than 200 is failure, so continue only if http code is 200
if($connection->http_code == '200'){
//Get twitter oauth url
$twitterUrl = $connection->getAuthorizeURL($requestToken['oauth_token']);
$data['oauthURL'] = $twitterUrl;
}else{
$data['oauthURL'] = base_url().'user_authentication';
$data['error_msg'] = 'Error connecting to twitter! try again later!';
}
}
$data['userData'