/**
  * OpenID プロバイダからコールバックされたパラメータを元 Mars_OpenID のオブジェクトインスタンスを生成します。
  * 
  * @return Mars_OpenID Mars_OpenID のオブジェクトインスタンスを返します。
  *   インスタンスの生成に失敗した (OpenID プロバイダからリクエストされたパラメータが不正、または存在しない) 場合は FALSE を返します。
  * @author Naomichi Yamakita <*****@*****.**>
  */
 public static function createFromRequest()
 {
     $request = Mars_DIContainerFactory::getContainer()->getRequest();
     $provider = $request->getPathInfo('_openId.provider');
     if (null_or_empty($provider)) {
         return FALSE;
     }
     try {
         $instance = self::create($provider);
         if (!$instance->receiveData()) {
             return FALSE;
         }
     } catch (Mars_UnsupportedException $e) {
         return FALSE;
     }
     return $instance;
 }
 /**
  * 3-legged OAuth プロバイダからコールバックされたパラメータを元に {@link Mars_OAuthProvider} を実装したクラスのオブジェクトインスタンスを生成します。
  * (2-legged OAuth プロバイダで当メソッドを使用することはできません)
  *
  * @return Mars_OAuthProvider {@link Mars_OAuthProvider} を実装したクラスのオブジェクトインスタンスを返します。
  *   インスタンスの生成に失敗した (OAuth プロバイダからリクエストされたパラメータが不正、または存在しない) 場合は FALSE を返します。
  * @throws Mars_RequestException パラメータが不正な場合に発生。
  * @author Naomichi Yamakita <*****@*****.**>
  */
 public static function createFromRequest()
 {
     // Twitter、facebook は PATH_INFO 形式、mixi は GET 形式で 'state' パラメータを返す
     // (mixi は 'state' パラメータ固定)
     $request = Mars_DIContainerFactory::getContainer()->getRequest();
     $provider = $request->getParameter('state');
     if (null_or_empty($provider)) {
         return FALSE;
     }
     try {
         $instance = self::create($provider);
         $instance->parseAccessToken();
     } catch (Mars_UnsupportedException $e) {
         return FALSE;
     }
     return $instance;
 }
 /**
  * 画像や Flash データへのリダイレクトを行います。
  * 
  * @param string $path リダイレクト先のコンテンツファイル。'webroot' からの相対パスを指定します。
  * @param bool $signed TRUE を指定した場合、リクエストの妥当性を検証するための OAuth Signature が追加されます。 
  * @author Naomichi Yamakita <*****@*****.**>
  * @link http://developer.mixi.co.jp/appli/spec/mob/for_partners/images_and_flash 画像や Flash 等の表示について
  */
 public static function sendRedirectMedia($path, $signed = FALSE)
 {
     if (substr($path, 0, 1) !== '/') {
         $path = '/' . $path;
     }
     $queryData = array();
     if ($signed) {
         $queryData['signed'] = 1;
     }
     $extra = array();
     $extra['query'] = $queryData;
     $extra['absolute'] = TRUE;
     $path = Mars_HTMLHelper::buildAssetPath($path, 'image', $extra);
     $queryData = array();
     $queryData['url'] = $path;
     $uri = self::getContentsURI() . self::buildQueryString($queryData);
     Mars_DIContainerFactory::getContainer()->getResponse()->sendRedirect($uri);
 }