2

アプリでFacebookAPIを使用しています。その正常に動作している私はログインして壁に投稿することができます。しかし、ログイン情報を削除できませんでした。

これはコードです

   public boolean saveCredentials(Facebook facebook) {
        Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
        editor.putString(TOKEN, facebook.getAccessToken());
        editor.putLong(EXPIRES, facebook.getAccessExpires());
        return editor.commit();
    }

    public boolean restoreCredentials(Facebook facebook) {
        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
        facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
        facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
        return facebook.isSessionValid();
    }

    public boolean removeCredentials()
    {
        SharedPreferences prefs = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);

            facebook.setAccessToken(prefs.getString("", null));
        facebook.setAccessExpires(prefs.getLong("", 0));
        Editor editor = prefs.edit(); 
        editor.clear();
        editor.commit(); 
        return true; 
    }

共有設定の詳細は、removeCredentials()メソッドを呼び出しても削除されていません。Facebookのウォールにメッセージを投稿するだけです。

保存した詳細を削除したいのですが、ユーザーが再びウォールにメッセージを投稿するように要求した場合は、ログイン画面をポップアップする必要があります。

ヘルプの人に感謝します

4

3 に答える 3

11

以下のリンクを参照してください

https://stackoverflow.com/a/3687333/1441666

SharedPreferences.Editor.remove() followed by a commit()

また

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
于 2012-07-13T12:15:49.803 に答える
1

私は自分のプロジェクトでそれが完璧に機能していることを使用しました。

Preferences = getSharedPreferences( "ここにあなたのプリファレンス名があります"、Context.MODE_PRIVATE);

  1. editor = Preferences.edit();
  2. editor.clear();
  3. editor.commit();
于 2016-05-03T09:45:04.900 に答える
0

ここでの問題は、(IMO)から資格情報をクリアすることですSharedPreferences。これにより、SharePreferencesからのみトークンと日付が削除されます。

ただし、オブジェクトのセッションを無効にしないでください。facebookそのため、今のところ、Facebookのフィールド変数にトークンと日付があり、そのメッセージを投稿できます。

なぜなら

  • Facebookオブジェクトが作成されると、からそれらの資格情報が自動的に取得されますSharedPreferences
  • 次に、資格情報を削除します
  • しかし、Facebookオブジェクトには資格情報があります。それらも無効にしてみてください。

更新: したがって、それらを無効にした場合は、次のように、Facebookにアクティビティを投稿する前に必ずセッションを確認してください。

facebook.isSessionValid(); //checks if the session valid
于 2012-07-13T12:16:26.240 に答える