先日、Twitterアプリ codebird-phpを使ってログインしようとしてもFatal errorが…という記事を書きました。結局、手を余してどうしても分からなかったので、詳しい方にオフラインで教えてもらいました。
ただし、この教えてもらった内容について、自分の手を動かしてまだ試していません。それでもTwitterによるログインサービスが、行き詰ってヒントすら見当たらないという人の参考になれば幸いです。
問題のおさらい
繰り返しになりますが、問題の内容をおさらいしておきましょう。
下記の2つのサイトを参考にして、twitterでログインするするWebサービスを作っていますが、エラーが出てしまいます。
しかし、これらにもとづいて、プログラミングコードを記述してログインしようとしても、
“Fatal error: Uncaught exception ‘Exception’ with message ‘Error 77…”が表示されます。
問題解決のためのヒント
自分のサーバー環境では試していませんが、教えてもらった方のサーバー環境では、認証画面に遷移することができました。遷移するためにはいくつかポイントがあるようです。
1.サーバー環境を公開状態にする
callback.phpやlogin.phpが入ったフォルダを公開サーバー上にアップロードしてください。でないとTwitter APIからWebアプリへのコールバックができません。
2.TwitterAPIにアクセスするためのcordbird.phpの書き換え
callback.phpやlogin.phpと同じフォルダに入れている、cordbird.phpの366行目と367行目、及び904行目と905行目のコードを変更します。どちらも同じコードなので、同じ変更を行います。
(変更前)
[php]
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
[/php]
(変更後)
[php]
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
[/php]
記述を変更するのは、通信暗号のプロトコルをあわせるためです。自分のサーバーが”http”で、cordbird.phpが”https”だと通信ができないとのこと…。
補足説明
TwitterAPIにアクセスするためのライブラリは、cordbird.phpでなくとも、Twitteroauthでも良いそうです。これならcordbird.phpのようにコードの内容を変更することは不要とのことでした。
なお、Twitteroauthの使い方については、以下の〔参考サイト〕をご覧ください。
〔前の記事〕
〔参考サイト〕