2011-07-01 10 views
0

私はアブラハムウィリアムのTwitterOAuthパッケージを使用してアプリケーションを構築しています。私は1つの問題に遭遇している以外は、アプリケーションは正常に動作しています。アブラハムウィリアムズTwitter oAuth PHPコールバックの問題

アプリをインストールしようとするユーザーの約25%はそうすることはできません。彼らはTwitterページ上のアプリケーションを確認し、「ログイン」(Twitterのウェブサイト上)をクリックする。 Callback.phpページに戻って参照すると、空白のページが表示されます。私は何が間違っているのか分かりません。なぜなら、それはほとんどのユーザーにとって機能するからです。何か案は?ここで

はcallback.phpコードです:

<?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 to DENY access 
if(!empty($_GET["denied"])) { 
    // could re-direct or display cancelled view/template 
    // we're just echoing out a message 
    echo "No deal! <a href='login.php'>Try again?</a>"; 
    die(); 
} 

// User has selected to ALLOW access for given token 
if($_GET["oauth_token"] == $_SESSION["oauth_token"]) { 
    // Use generated request tokens (from session) to construct object 
    $tOAuth = new TwitterOAuth($consumerKey, $consumerSecret, $_SESSION["oauth_token"], $_SESSION["oauth_token_secret"]); 
    // Retrieve access token from Twitter 
    $accessToken = $tOAuth->getAccessToken(); 

    //echo "RECEIVED TOKENS<br>"; 
    // Check we have valid response 
    if(is_numeric($accessToken["user_id"])) { 
    // Save the access tokens to a DB (we're using a 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 * FROM `t4i_app`.`users_twitter` WHERE user_id = '".$_SESSION["access_token"]["user_id"]."'"; 
    $rs = mysql_query($query); 
    if(mysql_num_rows($rs)) { 

     //update query 
     //echo "user already exists..need to 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."' WHERE `users_twitter`.`user_id` = '".$_SESSION["access_token"]["user_id"]."';"; 
     mysql_query($query); 
    } else { 

     $query = "INSERT INTO `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 just added the 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 to main page 
    header("location: http://www.mydomain.com/welcome.php"); 
    } else { 
    //echo "TRYING TO REDIRECT <br>"; 

    header("location: http://www.mydomain.com"); 
    } 
} 
?> 
+0

は** [エラーログ]を有効にします(http://php.net/manual/en/errorfunc.configuration.php)*:それは場所ではないとき、私はすべてのブラウザがそれを尊重する100%ではありませんよ*あなたのPHPアプリケーションのため。空白のページは、どこかで発生する致命的なエラーの兆候です。したがって、エラーログが有効になっている場合は、これらのエラーが文書化されています。これは時折何が起こるかを知るのに役立ちます。また、警告や注意書きを記録しておけば、スクリプトがうまく動作するようにエラーを見つけることさえあります。 – hakre

+0

チップのおかげでありがとう。エラーログが有効になっていますが、ログを監視していますが、関連するエラーはありません。他のアイデア? –

答えて

0
if ($_GET["oauth_token"] == $_SESSION["oauth_token"]) 
  • あなたはこのために、他でのerror_logを入れたいと思うでしょう、あなたはどんなメッセージなしで失敗している場合oauth_tokensで取得とセッションが一致しません。 Twitterが適切に応答していない可能性があります。

  • また、私はヘッダーコールでLocationを大文字にします。