質問: $oauth->tknrq(); print_r($url); header('Location: ' . $url); } ``` ### 補足など ソースは関連する部分だけを抜き出しています ターミナルで実行した場合は$urlが正常に出力されます ちなみにtknrq()内の1,2,5行目をコメントアウトして適当な文字列を返すようにした場合は表示されます ### 実行環境 PHP5.6.4 さくらVPS CentOS 6.8
回答: > > ちなみにtknrq()内の1,2,5行目をコメントアウトして適当な文字列を返すようにした場合は表示されます > > > `$rto`が何になっているか`var_dump($rto);`で確認しましたか?デバッグの基本ですよ.また,そのままLocationヘッダで遷移してしまうとマズいので,直後に`exit`を入れてください. 【蛇足】 ライブラリ側の実装も含め,認証に関する例外処理が甘いような気がします.一度 mpyw/TwistOAuth で試してもらえませんか?このライブラリは少しでもおかしいことがあると `TwistException` をスローするのですぐに間違いに気付けます. サンプルコードを書いておきます. ``` renewWithRequestToken(C_CALLBACK); header("Location: {$_SESSION['to']->getAuthorizeUrl()}"); exit; } // セッションがアクセストークン未取得状態のときはoauth_verifierをパラメータとしてそれを取りに行く // 成功したらログイン済みフラグをセットする if (!isset($_SESSION['logined'])) { $_SESSION['to'] = $_SESSION['to']->renewWithAccessToken(filter_input(INPUT_GET, 'oauth_verifier')); $_SESSION['logined'] = true; } // クレデンシャルの中身を表示 var_dump($_SESSION['to']); } catch (TwistException $e) { // 認証ステップでなにか異常があったらセッションを空にしてエラーメッセージを表示 // (ページを更新するとリクエストトークン取得から再試行になる) $_SESSION = []; header('Content-Type: text/plain; charset=UTF-8', true, $e->getCode() ?: 500); exit($e->getMessage()); } ```