google web サービスでユーザ情報の取得
#12 ユーザー情報を取得しよう
http://dotinstall.com/lessons/google_connect_php_v2/9912
を参考に
アクセストークンをつかってユーザ情報を取得
これについては
https://developers.google.com/accounts/docs/OAuth2WebServer?hl=ja#callinganapi
の
Calling a Google API
の部分を参考にする
これによれば
GETで
https://www.googleapis.com/oauth2/v1/userinfo?access_token=
にアクセスすることになる
の
このURL後ろにアクセストークンをつける
$url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token='.$json->access_token;
でURLを $url へ格納する
$json に access_token の項目が格納されているので
$json->access_token
としている
このようなAPIの引っ張り方は、他のweb api
で使うので
覚えておくと便利
これにアクセスして情報を得たいので
file_get_contents($url)
としている
file_get_contents() は
ファイルの内容をすべて文字列に読み込む関数
http://php.net/manual/ja/function.file-get-contents.php
のリファレンスを参考にするとわかりやすい
今回は $url で データを読み込むファイルを指定している
リファレンスだと filename に該当する部分
しかし、返ってくる値は json なので
json_decode() をつかってデコードする必要がある
json_decode() については
http://php.net/manual/ja/function.json-decode.php
のリファレンスを参考にする
今回は
json_decode(file_get_contents($url));
となる
このJSONデコードされたユーザ情報を変数に格納するので
$me = json_decode(file_get_contents($url));
とする
中身を確認したいので
var_dump() を使って確認
var_dump($me);
ただし、セッションの関係もあり、そのままリロードするとうまくいかないため
一度 index.php に戻って
再度 google の認証してから試すようにする
そのままだと見にくいので
右クリックして
ページのソースを表示とすれば
改行されてみやすくなる
情報取得が確認できたら
var_dump()
はコメントアウトして
DBへ情報を格納していく
$dbh = connectDb();
次に、SQLでユーザの存在を調べ
いないのならDBへ追加する
$sql ="select * from users where google_user_id = id limit 1";
このSQLを実行するため
$stmt = $dbh=>prepare($sql); $stmt=>execute(array(":id"=>$me->id)); $user = $stmt=>fetch();
if でユーザの存在がなかったときにDB追加する判定は
if(!$user){ }
となる