/**
   * 認証Tokenが有効かどうかをチェックする
   *
   * @throws IOException
   */
  public boolean checkToken() throws IOException {
    // alreay has Token?
    SharedPreferences preference =
        context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
    this.token = preference.getString("token", null);

    if (this.token == null) {
      return false;
    }

    // check Token validated.
    // http://flickr.com/services/rest/?method=flickr.auth.checkToken&auth_token=sdkjlsa983&api_key=987654321&frob=1a2b3c4d5e&api_sig=7f3870be274f6c49b3e31a0c6728957f.
    TreeMap<String, Object> map = new TreeMap<String, Object>();

    map.put(paramApiKey, apiKey);
    map.put(paramMethod, AUTH_CHECK_TOKEN);
    map.put(paramResponseFormat, jsonFormat);
    //		map.put(paramFlob, frob);
    map.put(paramAuthToken, this.token);
    map.put(paramApiSig, makeToken(map));

    RestRequestData request = new RestRequestData();
    request.setUrl(baseUrl);
    request.setPath(servicePath + "/" + restPath + "/");
    request.setQueryParam(map);

    URL url = RestfulLib.makeUrl(request);
    String response = RestfulLib.httpGetRequest(url.toString());
    return parseCheckToken(response);
  }
  /** redirect to flickr auth web pages. */
  public Uri redirectAuthPage() {
    // http://flickr.com/services/auth/?api_key=987654321&perms=write&frob=1a2b3c4d5e&api_sig=6f3870be274f6c49b3e31a0c6728957f
    TreeMap<String, Object> map = new TreeMap<String, Object>();

    map.put(paramApiKey, apiKey);
    map.put(paramPerm, "write");
    map.put(paramFlob, frob);
    map.put(paramApiSig, makeToken(map));

    RestRequestData request = new RestRequestData();
    request.setUrl(baseUrl);
    request.setPath(servicePath + "/" + authPath + "/");
    request.setQueryParam(map);

    URL url = RestfulLib.makeUrl(request);
    return Uri.parse(url.toString());
  }
  /**
   * get flickr flobs
   *
   * @throws IOException
   */
  public void getFlob() throws IOException {

    // (example)
    // http://flickr.com/services/rest/?method=flickr.auth.getFrob&api_key=987654321&api_sig=5f3870be274f6c49b3e31a0c6728957f
    TreeMap<String, Object> map = new TreeMap<String, Object>();

    map.put(paramMethod, AUTH_GET_FLOB);
    map.put(paramApiKey, apiKey);
    map.put(paramResponseFormat, jsonFormat);
    map.put(paramApiSig, makeToken(map));

    RestRequestData request = new RestRequestData();
    request.setUrl(baseUrl);
    request.setPath(servicePath + "/" + restPath + "/");
    request.setQueryParam(map);

    URL url = RestfulLib.makeUrl(request);
    String response = RestfulLib.httpGetRequest(url.toString());
    parseFrob(response);
  }
  /**
   * 認証用トークン取得要求 Webでの認証後に呼び出される
   *
   * @throws IOException
   */
  public boolean getToken() throws IOException {
    // http://flickr.com/services/rest/?method=flickr.auth.getToken&api_key=987654321&frob=1a2b3c4d5e&api_sig=7f3870be274f6c49b3e31a0c6728957f.
    TreeMap<String, Object> map = new TreeMap<String, Object>();

    map.put(paramApiKey, apiKey);
    map.put(paramMethod, AUTH_GET_TOKEN);
    map.put(paramResponseFormat, jsonFormat);
    map.put(paramFlob, frob);
    map.put(paramApiSig, makeToken(map));

    RestRequestData request = new RestRequestData();
    request.setUrl(baseUrl);
    request.setPath(servicePath + "/" + restPath + "/");
    request.setQueryParam(map);

    URL url = RestfulLib.makeUrl(request);
    String response = RestfulLib.httpGetRequest(url.toString());

    return parseToken(response);
  }