ラベル Error記録 の投稿を表示しています。 すべての投稿を表示
ラベル Error記録 の投稿を表示しています。 すべての投稿を表示

2012年10月15日月曜日

[Error記録]"Sorry, that page does not exist","code":34

Twitter OAuth認証時に新たなErrorが出た。

ブラウザ上ではこのようなError。
5~11行目を見るとわかるように、requestTokenとaccessTokenの取得には成功しているのに、
なぜか、11行目でTwitter側から情報が取得できず、 "Sorry, that page does not exist","code":34
 というメッセージが返ってきている。
ただ、この状態で、別画面に遷移してみると、認証されてユーザ情報が表示された。
ログイン時、ユーザ情報をTwitter側から更新する仕組みになっているが、
更新は行われず、取得したaccessTokenでログインのみした状態となったと思われる。


Notice (8): Undefined index: id_str [APP\controllers\users_controller.php, line 66]Code | Context            )));
        }
        $output = call_user_func_array(array(&$controller, $params['action']), $params['pass']);$consumer    =    OAuth_Consumer

$requestToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$accessToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$json    =    "{"errors":[{"message":"Sorry, that page does not exist","code":34}]}"
$twitterData    =    array(
    "errors" => array(
    array()
)
)UsersController::twtrCallback() - APP\controllers\users_controller.php, line 66
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 204
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 171
[main] - APP\webroot\index.php, line 86
Notice (8): Undefined index: screen_name [APP\controllers\users_controller.php, line 67]Code | Context            )));
        }
        $output = call_user_func_array(array(&$controller, $params['action']), $params['pass']);$consumer    =    OAuth_Consumer

$requestToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$accessToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$json    =    "{"errors":[{"message":"Sorry, that page does not exist","code":34}]}"
$twitterData    =    array(
    "errors" => array(
    array()
)
)UsersController::twtrCallback() - APP\controllers\users_controller.php, line 67
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 204
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 171
[main] - APP\webroot\index.php, line 86
Notice (8): Undefined index: profile_image_url [APP\controllers\users_controller.php, line 70]Code | Context            )));
        }
        $output = call_user_func_array(array(&$controller, $params['action']), $params['pass']);$consumer    =    OAuth_Consumer

$requestToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$accessToken    =    OAuthToken
OAuthToken::$key = "XXXXXXXXXXXXXXXXXXXXX"
OAuthToken::$secret = "XXXXXXXXXXXXXXXXXXXXX"
$json    =    "{"errors":[{"message":"Sorry, that page does not exist","code":34}]}"
$twitterData    =    array(
    "errors" => array(
    array()
)
)UsersController::twtrCallback() - APP\controllers\users_controller.php, line 70
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 204
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 171
[main] - APP\webroot\index.php, line 86
Warning (512): SQL Error: 1048: Column 'user_id' cannot be null [CORE\cake\libs\model\datasources\dbo_source.php, line 684]Code | Context
        if ($this->error) {
            $this->showQuery($sql);$sql    =    "INSERT INTO `users` (`user_id`, `user_name`, `access_token_key`, `access_token_secret`, `img_url`, `updated`, `created`) VALUES (NULL, NULL, 'XXXXXXXXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXX', NULL, '2012-10-15 16:15:39', '2012-10-15 16:15:39')"
$error    =    "1048: Column 'user_id' cannot be null"
$out    =    nullDboSource::showQuery() - CORE\cake\libs\model\datasources\dbo_source.php, line 684
DboSource::execute() - CORE\cake\libs\model\datasources\dbo_source.php, line 266
DboSource::create() - CORE\cake\libs\model\datasources\dbo_source.php, line 750
Model::save() - CORE\cake\libs\model\model.php, line 1342
User::update() - APP\models\user.php, line 52
UsersController::twtrCallback() - APP\controllers\users_controller.php, line 72
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 204
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 171
[main] - APP\webroot\index.php, line 86
Query: INSERT INTO `users` (`user_id`, `user_name`, `access_token_key`, `access_token_secret`, `img_url`, `updated`, `created`) VALUES (NULL, NULL, 'XXXXXXXXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXX', NULL, '2012-10-15 16:15:39', '2012-10-15 16:15:39') 
Warning (2): Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\rakuzon\cake\libs\debugger.php:686) [CORE\cake\libs\controller\controller.php, line 742]Code | Context */
    function header($status) {
        header($status);$status    =    "Location: http://127.0.0.1/rakuzon/main/index"header - [internal], line ??
Controller::header() - CORE\cake\libs\controller\controller.php, line 742
Controller::redirect() - CORE\cake\libs\controller\controller.php, line 721
UsersController::twtrCallback() - APP\controllers\users_controller.php, line 82
Dispatcher::_invoke() - CORE\cake\dispatcher.php, line 204
Dispatcher::dispatch() - CORE\cake\dispatcher.php, line 171
[main] - APP\webroot\index.php, line 86 
https://dev.twitter.com/discussions/11595
ここに対処策が出ていた。 ユーザ情報を引き出す際のURLを以下のように変更したら正常に動作した。
http://twitter.com/account/verify_credentials.json
 ↓
http://api.twitter.com/1/account/verify_credentials.json

また、以下のページによると
https://dev.twitter.com/discussions/10803 
現在以下を使用できないように変更中のようだ。
  • All API endpoints on www.twitter.com and twitter.com.
  • Endpoints on api.twitter.com without /1, /1.1 or /oauth in the fully qualified URL.
私の場合、twitter.comでアクセスし、1や1.1等のバージョンも無かったのでだめだった。
ただ、ソースの他の部分でまだtwitter.comで動いているところもあるので、
バージョンが無いのがダメだったということだろう。
twitter.comのままの部分は直さないと
今後またおかしなエラーが発生してしまうかもしれない。

2012年9月22日土曜日

[Error記録]Twitter Oauthログイン時のエラー

今朝最初にログインしようとしたとき、こんなエラーが出た。


で、修正も何もせずにすぐに同じようにログインしようとしたら、
正常にログインできた。

なんなんだろ、request_tokenがTwitter側からうまく帰ってくる前に処理が進んじゃってるからかな。


 【2012/10/03追記】
この現象、朝PCを起動して初めてログインしようとすると発生するんだよな。
今日も発生したので、「戻る」を押して、もう一度「許可」を押したら発生した。
その際、
$json = $consumer->get($accessToken->key, $accessToken->secret, 'http://twitter.com/account/verify_credentials.json', array());
で得られる$jsonをログに出力してみたんだけど、その結果が、
 {"error":"Could not authenticate you.","request":"\/account\/verify_credentials.json?oauth_consumer_key=・・・・・

"Could not authenticate you."というメッセージがあった。

これで検索すると、Could not authenticate you
というページでtwitterのリクエスト先のURLにhttpsをつければよい、
といった意見があったので試してみよう。
またユーザ側のクライアントの設定で「常にSSLを使用する」、といった設定をしている 場合に発生するとのこと。 クライアントとはおそらくブラウザのこと。 こちらも試してみよう。

【2012/10/03追記②】

ちなみに、本日の追記の時は、一度失敗したCallbackURLをもう一度
ブラウザでたたいたので、シミュレーションだったのだが、先ほど、
お昼休みにPCを落として、またログインしてみたら発生して、
ログを見たら新たな発見があった。
2012-10-03 16:50:15 Debug: requestToken
2012-10-03 16:50:15 Debug: oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXX&oauth_token_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
2012-10-03 16:50:15 Debug: accessToken
2012-10-03 16:50:15 Debug: 
2012-10-03 16:50:15 Debug: Notice (8): Trying to get property of non-object in [C:\xampp\htdocs\rakuzon\app\controllers\users_controller.php, line 55]
2012-10-03 16:50:16 Debug: json
2012-10-03 16:50:16 Debug: {"error":"Could not authenticate you.","request":"\/account\/verify_credentials.json?oauth_consumer_key=
requestTokeをセッションから取得することはできているのだが、
accessTokenをTwitter側から取得できていない、ということがわかった。
つまり以下がうまくいっていないようだ。
$accessToken=$consumer->getAccessToken('http://api.twitter.com/oauth/access_token',$requestToken); 
【2012/10/04追記】
上記のURLをhttpからhttpsにしてもダメだった。
なんでだろうなー。

【2012/10/05追記】
何も修正していないのに、なぜか今日エラーが出ずにいけた。