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後ろにアクセストークンをつける
1 |
でURLを $url へ格納する
$json に access_token の項目が格納されているので
1 | $json ->access_token |
としている
このようなAPIの引っ張り方は、他のweb api
で使うので
覚えておくと便利
これにアクセスして情報を得たいので
1 | 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
のリファレンスを参考にする
今回は
1 | json_decode( file_get_contents ( $url )); |
となる
このJSONデコードされたユーザ情報を変数に格納するので
1 | $me = json_decode( file_get_contents ( $url )); |
とする
中身を確認したいので
var_dump() を使って確認
1 | var_dump( $me ); |
ただし、セッションの関係もあり、そのままリロードするとうまくいかないため
一度 index.php に戻って
再度 google の認証してから試すようにする
そのままだと見にくいので
右クリックして
ページのソースを表示とすれば
改行されてみやすくなる
情報取得が確認できたら
var_dump()
はコメントアウトして
DBへ情報を格納していく
1 | $dbh = connectDb(); |
次に、SQLでユーザの存在を調べ
いないのならDBへ追加する
1 | $sql = "select * from users where google_user_id = id limit 1" ; |
このSQLを実行するため
1 2 3 | $stmt = $dbh =>prepare( $sql ); $stmt =>execute( array ( ":id" => $me ->id)); $user = $stmt =>fetch(); |
if でユーザの存在がなかったときにDB追加する判定は
1 2 | if (! $user ){ } |
となる