Abraham Williams Twitter oAuth PHP Callback Issue -
i building app using abraham william's twitteroauth package. app working fine, except running 1 problem.
about 25% of users try install app cannot so. verify application on twitter page , click "sign in" (on twitter's website). when referred callback.php page, gives them blank page. cannot figure out wrong, because works users. ideas?
here callback.php code:
<?php require_once("config_db.php"); session_start(); // include class & create require_once("consumer-keys.php"); require_once("twitteroauth/twitteroauth/twitteroauth.php"); // user has selected deny access if(!empty($_get["denied"])) { // re-direct or display cancelled view/template // we're echoing out message echo "no deal! <a href='login.php'>try again?</a>"; die(); } // user has selected allow access given token if($_get["oauth_token"] == $_session["oauth_token"]) { // use generated request tokens (from session) construct object $toauth = new twitteroauth($consumerkey, $consumersecret, $_session["oauth_token"], $_session["oauth_token_secret"]); // retrieve access token twitter $accesstoken = $toauth->getaccesstoken(); //echo "received tokens<br>"; // check have valid response if(is_numeric($accesstoken["user_id"])) { // save access tokens db (we're using session) $_session["access_token"] = $accesstoken; //get credentials via api $credentials = $toauth->get('account/verify_credentials'); //echo "has numeric id<br>"; //isaac add db info $query = "select * `t4i_app`.`users_twitter` user_id = '".$_session["access_token"]["user_id"]."'"; $rs = mysql_query($query); if(mysql_num_rows($rs)) { //update query //echo "user exists..need update"; $query = "update `t4i_app`.`users_twitter` set `token` = '".$_session["access_token"]["oauth_token"]."', `secret` = '".$_session["access_token"]["oauth_token_secret"]."', `screen_name` = '".$credentials->screen_name."', `followers` = '".$credentials->followers_count."' `users_twitter`.`user_id` = '".$_session["access_token"]["user_id"]."';"; mysql_query($query); } else { $query = "insert `t4i_app`.`users_twitter` (`id` ,`screen_name` ,`token` ,`secret`, `user_id`, `followers`, `referer` ,`last_update` ,`date_registered`) values (null, '".$credentials->screen_name."', '".$_session["access_token"]["oauth_token"]."', '".$_session["access_token"]["oauth_token_secret"]."', '".$_session["access_token"]["user_id"]."', '".$credentials->followers_count."', '0', current_timestamp , current_timestamp);"; mysql_query($query); } //echo $query; //echo mysql_error(); //print_r($_session["access_token"]); $message = array('status' => 'test oauth update. #testoauth'); $test = $toauth->post('statuses/update', array('status' => 'i added new appname twitter application http://bit.ly/sampleurl')); //echo "posted status<br>"; //end isaac // remove request token session variables unset($_session["oauth_token"]); unset($_session["oauth_token_secret"]); // redirect main page header("location: http://www.mydomain.com/welcome.php"); } else { //echo "trying redirect <br>"; header("location: http://www.mydomain.com"); } } ?>
if ($_get["oauth_token"] == $_session["oauth_token"])
you'll want put error_log in else this, you're failing without messages if oauth_tokens in , session don't match. twitter isn't responding properly.
also, capitalize location in header call. i'm not 100% every browser honor when it's not location:
Comments
Post a Comment