CakePHPを使った携帯用twitterクライアントの k-twi に関して色々。
かなり前にCakePHPを用いて携帯用のWEBクライアントを作った。
http://d.hatena.ne.jp/hosimitu/20100213/1266067360
それをGitHubにも公開している。
https://github.com/hosimitu/k-twi
CakePHP、GitHub共に自分の勉強用に適当にしてたのだけど、
今回使ってくださる方がいらっしゃったのでそのやり取りを公開。
あと少しいじった。
kadi_ri | @hosimitu いきなりのリプライ失礼します。k-twiのソースをお借りして課題を作ろうとしているのですが、初歩的な部分でつまずいております。大変失礼かと思われますが、よろしければ質問してもよろしいでしょうか…? | link | |
hosimitu | @makikadi 構わないですよ。なのですが、今出掛けてますので返信が遅れるもしくは夜になってしまいます。 | link | |
kadi_ri | @hosimitu ありがとうございます、こちらも環境を整え質問を纏めてからリプライ致します。基本的な部分から質問しなければわからない段階なので、お手数おかけするかと思われますが、是非ともお願いいたします。 | link | |
hosimitu | @makikadi 了解です。また適当にリプライ飛ばしていただければ、返信しますね。 | link | |
kadi_ri | @hosimitu phpに関する知識が全く無いのでほぼ0から質問させて頂きます。レンタルサーバーへのCakePHPインストールまでは済ませました。ルートディレクトリ直下にcakeフォルダを作成し中にapp/cake/plugin等のフォルダがあります。 | link | |
kadi_ri | @hosimitu 使い方に書いてあるコントローラー、モデル、ビューをそれぞれ配置というのはどこに置けばいいのでしょうか。 | link | |
hosimitu | @makikadi それぞれ app/cake/controllers と app/cake/models と app/cake/views です。 | link | |
kadi_ri | @hosimitu appフォルダ内にcakeフォルダは無いのですが、cakeフォルダを作成して入れればいいのでしょうか? | link | |
hosimitu | @makikadi すみません^^; 自分の環境のままコピペしてました・・・。 正しくは app/controllers と言う風な感じです。cakePHPを配布元からダウンロードしてきて解凍したら同じ名前のフォルダがあるはずです。 | link | |
kadi_ri | @hosimitu ありがとうございます。app内に上書きしました。解凍した中のwebrootフォルダも同様にapp内に上書きすればよいのでしょうか? | link | |
hosimitu | @makikadi それでいけると思います。 | link | |
kadi_ri | @hosimitu 今の段階でアクセスをすると、http://twitpic.com/3u5i75 ←のようなエラーが出てしまいます。自分ではこの段階で躓いてしまいました。 | link | |
hosimitu | @makikadi 申し訳ないです。エラーコードだけ見ても原因がどこかわかるレベルじゃないです。ただ、configフォルダ内のroutes.phpとかをアップロードし忘れてたみたいです。今から準備しますので少々お待ちを。 | link | |
hosimitu | @makikadi 話は変わりますが、k-twiを入れる前にcakephpだけで動作確認はされましたか? | link | |
kadi_ri | @hosimitu http://bit.ly/goUGCr ←こちらを参考に設定を行い、全てグリーンの状態までは確認致しました。 | link | |
hosimitu | @makikadi グリーンになっているならバッチリですね。 http://bit.ly/hFtsF4 これをダウンロードし、解凍したら入っている routes.php をconfigフォルダ内に上書きしてください。 これだけで解決しないと思いますが・・・。ちょっと調べてみます。 | link | |
kadi_ri | @hosimitu 上書きしてみました。エラー文に変りなしです。お手数お掛けいたします…。 | link | |
hosimitu | @makikadi 『OAuth consumer component』 と 『KtaiLibrary』 は導入されましたか? | link | |
kadi_ri | @hosimitu 両方共に先ほどと同じくapp内に放り込んだりはしてみましたが、設定などがわからずにつまっておりました。今はどちらもいれておりません。 | link | |
hosimitu | @makikadi エラーコードの『undefined variable』は以下の関数が未定義ですよ、と言うエラーだそうです。で、さきほどの画像の下の方で言うとktaiって言う関数が未定義ですよと言う意味で、default.ctpを開くと$ktaiと言うものがあり―― | link | |
hosimitu | @makikadi ――それは『KtaiLibrary』由来のものです。なので『KtaiLibrary』を入れればエラーを消す一歩にはなると思います。 | link | |
kadi_ri | @hosimitu ではKtaiLibraryのreadmeに沿ってインストールを行ってみます。また躓いてしまうと思いますので申しわけありませんがよろしくお願いします。 | link | |
hosimitu | @makikadi ぜひやってみてください。こちらもすぐに答えれるか、正しい答えかどうかわかりませんが手伝えればなと思います。また気軽にリプライどうぞー | link | |
kadi_ri | @hosimitu ありがとうございます。 http://bit.ly/fSGh8H ←を参考にひと通りの設定を行ったところ、先程の画像で言う下のエラーが消えました。urlの方のエラーはどうすればいいか検討はつきますでしょうか? | link | |
kadi_ri | @hosimitu 素人の考えなので違うかもしれませんが、私の環境で導入したCakePHPは最新安定版の1.3.7なのですが、hosimitu様の製作環境が1.2.5なので http://bit.ly/hsXRhS のindex.phpの変更で引っ掛っているのかもしれないです。 | link | |
hosimitu | @makikadi エラーコードをグーグルで検索するとこんなページが出て来ました。 http://bit.ly/gVIVG2 $urlを削除してみてはどうでしょう? | link | |
hosimitu | @makikadi あーそうみたいですね。バージョンのことをすっかり忘れてました。解決方法は1.2のバージョンを使うか、1.3への以降手続きをするかですね。先ほどのリンク先では1.3ではKtaiLibraryが使えないかも、とあるので作るだけなら1.2の方が良いかも知れませんね。 | link | |
kadi_ri | @hosimitu 単純に$urlを削除したところ、エラーは消えましたが結局何も表示されず…。1.2.5環境でやり直してみようと思います。 | link | |
hosimitu | @makikadi むぅ・・・。難しいですね。1.2の環境でやってまた何かありましたら気軽にどうぞー。頑張ってくださいね。 | link | |
kadi_ri | @hosimitu こんにちは、昨日1.2環境でやり直してみたのですが何も表示されず駄目かと思っていたら頂いたroutes.phpに差し替えでトップが表示されました。しかしまだoauthなどがわからず…申し訳ございませんがまた教えていただけないでしょうか。 | link | |
hosimitu | @makikadi こんにちわー。表示されましたか。oauthに関しては途中までは http://www.hosimitu.com/2010/04/2920-1456.php を見ていただければと思います。twitter側で『Consumer key』などを取得してください。 | link | |
kadi_ri | @hosimitu ありがとうございます。そちらのキー取得は出来ております。oauthのコンポーネントですがREADMEのリンクからダウンロードしたものの中身vendorsとcontrollers両方を上書きでいいのでしょうか。サイトによってはvendorsしか使っていないので… | link | |
hosimitu | @makikadi vendorsとcontrollers両方を上書きしても問題ありません。ただ使うのはcontrollersの方です。正しくはその中にあるcomponentsと言うやつですけどね。 | link | |
kadi_ri | @hosimitu 上書きしました。中身を見てもどこを変更すればいいのか…。abstract_consumer.phpのconsumerKeyとconsumerSecretは自分のものにへんこうしました。 | link | |
hosimitu | @makikadi そこができているなら次は user_controller.php の中にある function add() 辺りでのURLを自分が公開するURLに変更する感じですかね。おそらく。 | link | |
kadi_ri | @hosimitu 自分のURLへ変更してみましたがトップから認証ボタンで飛んでも空白ページのままです。Twitter側のアプリケーション設定ですがブラウザアプリケーション、Read&Write、ログインに使用するでいいのでしょうか。 | link | |
hosimitu | @makikadi その設定でいけるはずです。コールバック用URLが間違ってたりしませんか? | link | |
kadi_ri | @hosimitu コールバックURLは http://自分の設置URL/users/twitter_callback にしています。 | link | |
hosimitu | @makikadi すみません。今見たらtwitter側の設定でログインに使用するにチェックは入ってませんでした(;´Д`) | link | |
kadi_ri | @hosimitu チェックを外してみましたが変化なしですι oauth_consumer.phpの17〜18行目はnullのままでいいのでしょうか? | link | |
hosimitu | @makikadi そこはnullで良いですよ。 oauth_consumerフォルダの中にあるtwitter_consumer.phpの値もキチンと設定してありますよね? | link | |
kadi_ri | @hosimitu oauth_consumerフォルダの中にはabstract_consumer.phpしかありません…。バージョンが違うのでしょうか…。 | link | |
hosimitu | @makikadi 今私が使っているバージョンがちょっと分からないんですが、最初に作る時参考にしたサイトは http://d.hatena.ne.jp/hagimi/20091123/p2 これです。一度試す価値はあると思います。 | link | |
kadi_ri | @hosimitu oauth認証の画面に飛びました!しかし認証して戻ってきたらエラーが…データベース名とかでのエラーでしょうか… http://twitpic.com/3ug8t5 | link | |
hosimitu | @makikadi おめでとうございます!もうちょっとで動きそうですね。 エラー見ただけではちょっとわからないです(´ω`)データベースは作ってありますか? | link | |
kadi_ri | @hosimitu ありがとうございます><データベースは、適当なテーブル名でREADMEの分をコピペで作ってあります。借りているサーバーでphpMyAdminが使えたのでそちらを利用して作りました。 | link | |
hosimitu | @makikadi 一番重要そうなエラーは画像にある赤文字のところだと思います。で、そのエラーでググるとどうやらArrayと言うデータベース中のカラムが無いみたいなことを表しているらしいです。先ほどの画像の一番下の4番のところで1,20,NULL〜〜〜Arrayってなっているのが | link | |
hosimitu | @makikadi 無くなれば解決しそうな気がしますね。user_controller.php中の150行、151行目の間にvar_dump($screen_name);とでも入れて何が変数の中に入っているのか確認すると何か糸口が見えるかも知れません。 | link | |
kadi_ri | @hosimitu object(SimpleXMLElement)#26 (1) { [0]=> string(8) "makikadi" } が返されました… | link | |
hosimitu | @makikadi むーこちらと何か違うみたいですね。 解決方法になりそうなのは175行目と191行目にある'screen_name' => $screen_name, を 'screen_name' => $screen_name[0], とするとかですかね?エラーが出るかも | link | |
kadi_ri | @hosimitu http://twitpic.com/3uhxus ←に変わりました。さっぱりですが…。 | link | |
hosimitu | @makikadi 先ほどの var_dump($screen_name); を削除して、152行目に var_dump($screen_name[0]); とした時何が入っています? settypeのしたに入れて見てください。 | link | |
kadi_ri | @hosimitu http://twitpic.com/3ui2tw あまり変化していないような | link | |
hosimitu | @makikadi 原因は148行目から151行目にあるように思います。 私の環境で再度確認してもgithubに上げているコードと同じもので、先ほどのvar_dumpもキチンとscreen_nameが入っていました。 解決の糸口として上から順に変数に何が入っているか・・・続く | link | |
hosimitu | @makikadi 続き・・・var_dumpで確認していきおかしなところを探すしか思いつきません。 まずは手始めにvar_dump($xml);でキチンとtwitterのAPIが入っているかどうか確認してください。 | link | |
kadi_ri | @hosimitu http://twitpic.com/3uibs8 左の結果となりました。 | link | |
hosimitu | @makikadi twitterのAPIは呼び出せているみたいですね。 $screen_name = $xml->screen_name; の下に var_dump($xml->screen_name); とでも入力してみてください。 | link | |
hosimitu | @makikadi object(SimpleXMLElement)#24 (1) { [0]=> string(8) "〜〜〜" } とか表示されていたらそこまではこちらと同じです。 | link | |
kadi_ri | @hosimitu 150行目の$xml->screen_nameを$xml->user->screen_nameに変更したところ、認証でき、専用ページURLを掃き出しました!!!しかしツイート後の画面でエラーが。。 | link | |
hosimitu | @makikadi おー!!ついに来ましたね!おめでとうございます! ツイート後にエラーと言う事はtwitter_controller.php の function post() 辺りが怪しそうですね。 | link | |
kadi_ri | @hosimitu ありがとうございます!本当に感謝し通しです…( ;∀;) エラーですが、 http://twitpic.com/3uikmn ←このような感じです。いい加減頼りっきりですが、何かわかればおねがいしますm(_ _)m | link | |
hosimitu | @makikadi むー。ちょっとわからないですね。エラーコードでググってもさっぱりです。強引に訳すと twitters/postが開く権限を持ってない的な事が書いてありますね。 $req = $this->OauthConsumerとかの行の頭に // でコメントアウトして | link | |
hosimitu | @makikadi 怪しそうな行のあとに echo "aaaa<br />"; とか echo "bbb<br />"; とか書き込んで実行し、どこまで処理が進んでいるのか確かめてから問題箇所の特定をしてみるのはどうですかね? | link | |
kadi_ri | @hosimitu $this->render("/twitters/post"); のところで表示位置が変わるということはここがエラーでしょうかね… | link | |
hosimitu | @makikadi おそらくそうだと思います。URLがサブディレクトリになってたりとかそう言うのが効いているのかも知れません。 | link | |
kadi_ri | @hosimitu render系の部分を一個階層上げることで大まかなエラーは消えました!!ただまだちらほらとエラーが残っているのでまたお聞きしたりしたいと思います(/ω\)本当にありがとうございます、大変勉強になりましたし助かりました! | link |