twitter-api-php
twitter-api-php copied to clipboard
Important Updated needed for Doc, about get user Data > email
You really need to explain how exactly to get the user data for Sign In with TW
and precise that at the end it requires to be exactly in this order, to work, with setGetfield first in the order logic I lost hours before being able to find I can send for you the whole steps to reach this..
Anyway the most difficult part was the end last step :
$url = 'https://api.twitter.com/1.1/account/verify_credentials.json';
$getfields="?include_email=true";//&oauth_token=".$response_array["oauth_token"]; $requestMethod = 'GET'; $twitter = new TwitterAPIExchange($settings); $result = $twitter->setGetfield($getfields) ->buildOauth($url, $requestMethod) ->performRequest();
Yes ! Please post the whole steps about how exactly to get the user data for Sign In with TW
STEP 1 -- CALL THE API TO GHET REDIRECTION URL
public $settingsTwitter = array(
'oauth_access_token' => "xxxxxx",
'oauth_access_token_secret' => "xxxxxx",
'consumer_key' => "xxxxxx",
'consumer_secret' => "xxxxxx"
);
public function login_twitter()
{
session_start();
$redirect_url = "{{YOUR OWN REDIRECTION URL"; //The page where Twitter will redirect after you login and accepted login with Twitter
$settings = $this->settingsTwitter;
$postfields = array(
'oauth_callback' => rawurlencode($redirect_url)
);
$url = "https://api.twitter.com/oauth/request_token";
$requestMethod = 'POST';
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->buildOauth($url, $requestMethod)
->setPostfields($postfields)
->performRequest();
$result = explode('&', $result);
$request_token = array(
"oauth_token" => explode('=', $result[0])[1],
"oauth_token_secret" => explode('=', $result[1])[1],
"oauth_callback_confirmed" => explode('=', $result[2])[1],
);
if ($request_token["oauth_callback_confirmed"] === "true") {
$redirection_url = 'https://api.twitter.com/oauth/authenticate?oauth_token=' . $request_token["oauth_token"];
//Here, redirect directly to this TwitterURL, or send it back to be processed on Front (for API system)
//Once passed Twitter login, it will redirect to $redirect_url
} else {
//Show error message
}
}
//STEP 2 in a page where you are redicted to by Twitter That should be the one in $redirect_url
if (isset($_GET['oauth_verifier']) && isset($_GET['oauth_token'])) {
$oauth_token = $_GET['oauth_token'];
$oauth_verifier = $_GET['oauth_verifier'];
$settings = $this->settingsTwitter;
//QUERY ACCESS TOKEN
$postfields = array(
'oauth_verifier' => $oauth_verifier,
'oauth_token' => $oauth_token,
);
$url = 'https://api.twitter.com/oauth/access_token';
$requestMethod = 'POST';
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->buildOauth($url, $requestMethod)
->setPostfields($postfields)
->performRequest();
$result = explode('&', $result);
$response_array = array(
"oauth_token" => explode('=', $result[0])[1],
"oauth_token_secret" => explode('=', $result[1])[1],
"user_id" => explode('=', $result[2])[1],
"screen_name" => explode('=', $result[3])[1],
);
//QUERY USER DATA
$url = 'https://api.twitter.com/1.1/account/verify_credentials.json';
$getfields = "?include_email=true";//&oauth_token=".$response_array["oauth_token"];
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$result = $twitter->setGetfield($getfields)
->buildOauth($url, $requestMethod)
->performRequest();
$userinfo = json_decode($result);
if (isset($userinfo->email)) {
$user = (object)array(
"email" => $userinfo->email,
"name" => $userinfo->name,
"id" => $userinfo->id,
);
///HERE PROCESS LOGIN USER IN YOUR CMS
exit;
}else {
//HERE WARN ERROR
}
} else {
//HERE WARN ERROR
}
I have added a Medium blog post where it's more detaillled and more clear https://blueorigamidigital.medium.com/php-twitter-sign-in-register-with-twitter-api-and-the-sdk-twitter-api-php-ee68de56aae1