Aug 9

逆引きrhaco43: Googleサービスへの認証を行う

Googleのサービスをスクリプトで使いたい場合に認証(Google Account Authentication)が必要なケースがあります。(例えばGoogle Calendar API)

認証方法としてはClient LoginとAuthSubの2通りあるのですが、今回はそのうちClient LoginをBrowserクラスを使って行います。

$flow = new Flow();
$user = 'Googleアカウント名';//gmailアドレスを使います
$pass = 'パスワード';
$browser = new Browser();
$body = $browser->post("https://www.google.com/accounts/ClientLogin",
  array(
    'Email'=>$user,
    'Passwd'=>$pass,
    'service'=>'サービス名'//カレンダーの場合はcl
  )
);
if(stristr($body,'error')!==false){
  ExceptionTrigger::raise(new GenericException("認証失敗"));
}else{
//結果からセッションに必要な情報を登録しておく
  if(preg_match('@^SID\=(.*?)$@ism',$body,$match)){
    $flow->setSession('sid',$match[1]);
  }
  if(preg_match('@^LSID\=(.*?)$@ism',$body,$match)){
    $flow->setSession('lsid',$match[1]);
  }
  if(preg_match('@^Auth\=(.*?)$@ism',$body,$match)){
    $flow->setSession('auth',$match[1]);
  }
  $result = $browser->get('サービスのurl’);//GET処理。postなら$browser->post
...以下結果を処理する
}

| comment(0)

このエントリーのはてなブックマーク (-)