▽1
●
rouge_2008 ●100ポイント ベストアンサー |
SSL接続のためのコードになっていないのが原因のようですので、GET_REQUEST_TOKEN(Request token URL)をhttps://からhttp://に変更すると処理が続行されると思います。
GET_REQUEST_TOKEN(Request token URL)をそのままにして、SSL接続するためには次のようにします。
$oauth = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET); // SSL接続の準備 ※ここから追加 $http_request = new HTTP_Request2(); $http_request->setConfig('ssl_verify_peer', false); $consumer_request = new HTTP_OAuth_Consumer_Request; $consumer_request->accept($http_request); $oauth->accept($consumer_request); // ここまで追加 $oauth->getRequestToken(GET_REQUEST_TOKEN, CALLBACK_URL);
http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php
※try?catchを正しく実行すると解決の糸口になります。
http://php.net/manual/ja/language.exceptions.php
とりあえず現在問題が発生している箇所についてだけですが、以降の処理で問題が発生する場合は、回答への返信で知らせてください。
【追記】※再修正してあります。現在のコードのままではgetAccessToken()で失敗するかもしれませんので、次のコードを追加してください。
※コメントの一つ目のページ(http://blog.mach3.jp/2010/10/pear-twitter-oauth.html)とこの回答で紹介しているページのコードでは記述されています。
「$oauth = new HTTP_OAuth_Consumer(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['request_token'], $_SESSION['request_token_secret']);」でセットされているはずですので、以下のコードは追記しなくても大丈夫です。
(参考:HTTP_OAuth_Consumer Construct
http://pear.php.net/package/HTTP_OAuth/docs/latest/__filesource/fsource_HTTP_OAuth__HTTP_OAuth-0.2.3HTTPOAuthConsumer.php.html#a137)
// リクエストトークンを$oauthにセット $oauth->setToken($_SESSION['request_token']); $oauth->setTokenSecret($_SESSION['request_token_secret']); //アクセストークンを取得 $oauth->getAccessToken('http://twitter.com/oauth/access_token', $_GET['oauth_verifier']);
※処理が進んだのを確認できたら、「header('Location:'.$url);」の前の echo および var_dump() はすべてコメントアウトしてください。(出力を停止しないと、『Cannot modify header information - headers already sent by ?』が表示されますので、コメントアウト等して出力停止後にセッションを破棄してからやり直してみてください。)
※なお、ローカル環境で動作確認できていますので、コールバックURLは問題ないはずです。(アプリケーションのSettingsで「Callback URL」を設定していない場合は、設定して試してみてください。)
>define('CALLBACK_URL','http://127.0.0.1/php/pear/tw.php’);
CALLBACK_URLがローカルアドレスというのが、ますいのでは?