2016-05-19 3 views
0

まあまあですが、私はGoogleのボレーで簡単なログインを作成しました。 ユーザーがログに記録されたら、彼はいくつかのアクションを実行するために、クッキーを追跡する必要があります。 私はこの機能でクッキーを設定します。Androidのボレーユーザーがクッキーでログインしているようにする

PersistentCookieStoreはこれです
private boolean setUpCookies(){ 

    boolean ris; 

    cookieManager = new CookieManager(new PersistentCookieStore(getApplicationContext()), CookiePolicy.ACCEPT_ALL); 
    CookieHandler.setDefault(cookieManager); 

    SharedPreferences preferences = getSharedPreferences(PersistentCookieStore.class.getName(), MODE_PRIVATE); 
    String session_cookie = preferences.getString("session_cookie",null); 

    if(session_cookie != null && !session_cookie.isEmpty()){ 

     Log.d(TAG,session_cookie); 
     ris = true; 

    }else{ 

     ris = false; 
    } 

    return ris; 

} 

:私は、サーバーのPHPを編集することはできませんので

 @Override 
     public void onResponse(String response) { 
      JsonParser parser = new JsonParser(); 
      JsonElement element = parser.parse(response); 

      if (element.isJsonArray()) { 
       try{ 

        JsonArray array = element.getAsJsonArray(); 
        JsonObject tmp = array.get(0).getAsJsonObject(); 

        if(setUpCookies()){ 

         Toast.makeText(getApplicationContext(), "Login OK", Toast.LENGTH_LONG).show(); 

         Intent myIntent = new Intent(MainActivity.this, PostLogin.class); 
         startActivity(myIntent); 

        }else{ 

         Toast.makeText(getApplicationContext(), "Could not set up cookies!", Toast.LENGTH_LONG).show(); 
        } 


       }catch (Exception e){ 
        VolleyLog.d(e.getMessage()); 
       } 

      } else if (element.isJsonObject()) { 

       JsonObject object = element.getAsJsonObject(); 
       Toast.makeText(getApplicationContext(), "Error! " + object.get("error").getAsString(), Toast.LENGTH_LONG).show(); 

      } 
      showProgress(false); 
     } 

:私はこれを持ってonResponse私のボレーで次にsource

ページ、私はこれを正しく行っているのだろうか、私はエミュレータでアプリケーションを起動すると、私はログインしてOK応答を取得してから、Androidデバイスモニタ私はその設定を削除するので、クッキーaセットしないでください! 私は自分自身を説明できることを願っています。

+0

通常のようにセッションCookieをアプリケーションに保存しようとしていますかユーザーのセッションを保存するWebブラウザで? – Omkar

+0

さて、私はアプリを開発していますが、単一のWebブラウザは使用されません – Vesco

答えて

0

cookieManager = new CookieManager(new PersistentCookieStore(getApplicationContext()), CookiePolicy.ACCEPT_ALL); 
CookieHandler.setDefault(cookieManager); 

あなたはは、cookiestoreを初期化し、これは環境設定が読み込まれるだけの時間です。すべての呼び出しでメモリ内のCookieが使用されるため、セッションは保持されます。あなたは、環境設定を削除し、変更することができますいずれかを適用する場合:

  • 力の停止を、あなたはまた、単にpublic boolean remove(URI uri, HttpCookie cookie)を使用することができますPersistentCookieStore

を再初期化して設定

  • 再びアプリを起動しますまたはpublic boolean removeAll()メモリ内のCookieは削除されますが、この実装(PersistentCookieStore)は削除時に同期されないため、セッション内のセッションを維持します

  • 関連する問題