twitterのOAuth認証と、DBのユーザーテーブルに追加する方法

■■■この記事は古いです。最下部に追記あり

オリジナルログインに加えて、
twitter OAuth認証のログインも付けることができました。

ネットで調べてもいろいろありますが、

下記の本がナイスです。
取得できるデータや、何ができるかも網羅してある!
Twitter API ポケットリファレンス (POCKET REFERENCE)

私は単に、わざわざ個人情報入力して新規登録したくない人への間口として
twitter認証を設置しようと思ったのですが
せっかくtwitterと連携されているなら
やれることはいろいろありますね。

ただ、OAuth接続のところは別のサンプルコードを参照しました。

OAuth認証を自作する!(php+twitter)
感覚的にソースの内容が分かりやすかったので・・

接続できたときは相当嬉しかったです^^

なぜか一番引っかかったのは接続した後。

OAuth認証についてはいろいろ情報があるのですが
認証後に、twitterアカウント情報を引っぱってきたりというのは
具体的にPHPでどうやるんだと。

めぐりめぐって上記の本に戻って来ました。

require “./tmhOAuth.php”;←やっぱりライブラリ的なの必要。。
$twitter = new tmhOAuth(
// 実際に取得したコンシューマキー、アクセストークンを記述
array(“consumer_key” => コンシューマキー,
“consumer_secret” => コンシューマシークレット,
“user_token” => アクセストークン,
“user_secret” => アクセストークンシークレット;

$twitter->request(“GET”, $twitter->url(“1/account/verify_credentials”));

// twitterユーザ情報を取得
$myself = json_decode($twitter->response[“response”]);
$twiscreenName = $myself->{“screen_name”};
$twiname = $myself->{“name”};
$twiurl = $myself->{“url”};
$twiid = $myself->{“id_str”};
$twilocation = $myself->{“location”};
$twidescription = $myself->{“description”};

これでそれぞれ変数に、ユーザーの情報が入った!

そしてtwitter経由のユーザーもユーザーマスタに追加したい・・ってとこで、疑問が。

オリジナルの新規登録ユーザーと、
twitter認証からのユーザーでは、
DBのユーザーテーブルを分けたほうがいいのか??

実際、Twitter経由の人はパスワードとかメアドとか無いわけで。

でもオリジナルで登録したユーザーが、後で
twitter連携を追加したりとかしたかったり。

これも答えが落ちているわけではなく・・
やりたい目的に合わせた設計になるということでしょうかね^^;

絵を書きながらしばらく考えましたが
試行錯誤して結局一緒のテーブルを作り出しました。

アクセストークンとかもDBやファイルなどの永続ストアに保管するのが通常らしいです。
次のログインが楽になったりするので。

但し、せっかく取得したアクセストークンも、
ユーザーが「許可した連携アプリの一覧」から
「許可を取り消す」を押すとリセットされ、
再度連携許可してもあらたなアクセストークンになるようです。

ログインの度に、不変のid_strをキーに、
twitterから新たな情報を持ってきて
変わるものはDB更新していく形がよいのかな。

ちなみにtwitterのアカウントデータには
id と id_str があって、どっち使おう?同じ?と思ったけど
下記のページで解決しました。

Twitterのstatus IDを保存しているサービスが直ちに確認すべき2つのポイント


Twitterのstatus IDが64bitになったことによる問題と対策

あとはtwitter経由のユーザーと
オリジナルメンバーで細かなメニューの違いを実装しないと。

■■■!!!2013年04月追記!!!
上記で完成したものが接続できなくなっていました;;

いろいろ調べたところ、以下ページを参照して作り直しました。


Twitter OAuth + PHP でログイン処理の実装

簡単にできた!!
よかった。

コメント

タイトルとURLをコピーしました