13 12月 |
前回に引き続きTwitter連携の話。
晴れてTwitterOAuthというライブラリを使えるようになった訳ですが もちろんこのライブラリにも認証機能があります。
主にこちらのサイトを参考にさせていただきました↓ 参考サイト:Twitter OAuth + PHP でログイン処理の実装
ほぼこちらのサイトのソースを流用させていただきながら(汗) 順調に認証できるようになったかと思ったのですが、案の定問題が。 参考サイトにはこう書かれています↓
>>初回は、Twitter認証画面へ飛ばされて、認証済み+2回目以降なら >>Twitter認証画面から直接Redirectされて callback に指定したURLへ飛ばされるようになります。
つまり、一回認証したアプリはわざわざユーザーが「認証する」のボタンを押さなくても 自動でコールバックURLにリダイレクトしてくれるということ。
ほう。これは便利な機能だな、と思いつつ試してみると・・・飛ばないんですよこれが!(涙)
できれば毎回認証は避けたいのでなんとかしたいです。 getAuthorizeURL()っていう認証ページのURLを生成してくれるメソッド(?)があるのですが その認証ページが2種類ありまして
https://api.twitter.com/oauth/authorize こちらは毎回認証が必要 https://api.twitter.com/oauth/authenticate こちらは2回目以降を自動省略
ということらしいのです。
getAuthorizeURL()の第一引数に、なんちゃらトークンを渡します(よくわかってない)これはOK。 第二引数を省略する(もしくはTUREを渡す)とauthenticateの方のURLを生成してくれる。とのこと。
うむ。問題無いはず。なんですよ。 生成されたURLを見ても、ちゃんとauthenticateの方になってます。あれ~???
ひととおり悪戦苦闘してみた後、怪しいものを発見しました。 Twitter DevelopersのOAuth settingsの画面です↓
なんか「Sign in with Twitter」という項目が「No」とかなってますね・・・
・・・これじゃね?とか思いながらSettingsタブの「Allow this application to be used to Sign in with Twitter」に チェックを入れて「Yes」に変更してみたところ・・・ちゃんと自動で飛ぶようになってくれました。
これさ、デフォルトで「No」になってるんですよ。ひどくない? こんな情報どこにも書いてなかったし!(ちゃんと探せば多分ある) もう少し私の勘が鈍かったら、あと2~3日は悩めますよこれ(勘でコーディング発言)
ちょっと調べたところ、どうやらセキュリティの関係で 最近追加された項目らしいです・・・ 少し古い情報になると対応していないのも仕方ないですよね・・・
引き続きがんばります。
|